当前位置:   article > 正文

MQTT在多linux主机的通讯实现_mqtt协议不在同一个网络下可以通信吗

mqtt协议不在同一个网络下可以通信吗

MQTT在多linux主机的通讯实现

环境

  • 局域网主机R3600:Ubuntu20
  • 局域网主机Ubuntu on VMware
  • 公网主机:118.195.183.14

MQTT基础

mqtt的发布-订阅模型

image-20220818101350894

mqtt的消息流

image-20220818101417467

内容

准备3个linux主机,2个是局域网主机,1个为公网主机。(只有一个也可以)

角色分配为局域网主机为client,公网主机为broker,同时也作为client

安装mosquitto的broker和client

输入如下查询可以安装哪些组件

sudo apt list | grep mosquitto
  • 1

image-20220818141007289

sudo apt install mosquitto mosquitto-clients
  • 1

在3台主机都安装上broker和client,新增如下指令说明安装ok

image-20220818103457028

运行broker

上述mosquitto安装后broker就已经自动运行了,输入如下查看

ps -ef | grep mosq && netstat -tln | grep 1883
  • 1

image-20220818104245204

注意:如果此时再去执行mosquitto,则会提示端口被占用

image-20220818103235788

发布与订阅

在公网主机开2个shell窗口,一个用于订阅消息,一个用于发布消息

拓扑结构是2个client和1个broker都在同一主机上

订阅一个主题为greeting的消息,有订阅消息到时会显示

image-20220818115811940

发布主题为greeting的消息

image-20220818115820321

发布与订阅(跨网络)

实际使用的拓扑结构往往时将broker运行在公网主机上,而client往往是各式各样的物联网设备。

这里实现局域网主机R3600发布消息,局域网主机vm-ubuntu和公网主机VM-0-2-ubuntu订阅消息

如下图表明多设备跨网络的mqtt的通讯成功

image-20220818143039744

image-20220818143047317

image-20220818143058302

参考

  1. Documentation | Eclipse Mosquitto
  2. Beginners Guide To The MQTT Protocol (steves-internet-guide.com)
  3. How MQTT Works -Beginners Guide (steves-internet-guide.com)
  4. mosquitto.conf man page | Eclipse Mosquitto
  5. [mosquitto port 1883 already in use - Raspberry Pi Forums](https://mosquitto.org/man/mosquitto-conf-5.html)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/975745
推荐阅读
相关标签
  

闽ICP备14008679号