原因是生产者和消费者是单独连接服务器的,也就是说与服务区有两个连接一个是生产者的连接一个是消费者的连接
物联网 (internet of thing) ,表示的是可以把一些带某些传感器的设备(终端),接入到互联网的行为。
通过互联网连接这些设备,这些设备就能够互相协作。
而 MQTT 就是这些设备之间数据通信的一个基于 TCP/IP 的协议。
每个终端都和实现了 MQTT 协议的代理/服务器相连。
通过 published MQTT 代理服务器的某个 主题 发送数据。
通过 subscription 从 MQTT 代理服务器获取自己订阅的 主题 数据。
MQTT 协议是一种轻量级的、灵活的网络协议。并且非常适合 IOT 的场景。
大多数开发人员已经熟悉了 >1Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
2MQTT协议是应用层协议不依赖长连接,适合弱网络。通过topic缓存信息。符合物联网设备的使用场景。因为通过topic缓存信息,因此可以实现通过topic与多个端的一对多连接,而不是设备与设备的多对多连接,节省了能耗及带宽。
MQTT的心跳,及非信息的报文,较Websocket更少,更节省带宽及能耗。更适用于物理网的多种网络协议。
3WebSocket和> 用户在使用CAT1模组MQTT协议对接自己的服务器,有时会遇到设备无法连接服务器问题(比如提示+ECMTCON:0,0,5连接服务器被拒绝,认证失败)。此时可以通过 标准的MQTT服务器 进行对比,因为用户自己的服务器一般加入校验信息,导致模组&MQTT服务器无法连接。
Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本31和311,这里使用该服务器进行测试。针对该服务器更详细的介绍也可以参考 >MQTT-SN的架构如图1所示。有3种类型的MQTT-SN组件:MQTT-SN客户端、MQTT-SN网关、MQTT-SN转发器。MQTT-SN客户端使用MQTT-SN协议连接到MQTT-SN网关,再连接到MQTT服务端。MQTT-SN网关可以集成到MQTT服务端里。如果是做为独立的网关,则MQTT服务端和MQTT-SN网关间将采用MQTT协议,它的主要功能就是MQTT和MQTT-SN之间的转换。
当客户端所在的网络无法直接连接到网关时,客户端也可以通过转发器来存取网关。转发器将它在无线网络侧所接收到的MQTT-SN侦进行简单封包,然后原封不动地发送给网关;相反的,它将从网关侧接收到的侦解封,然后同样原封不动地发送到客户端。
基于网关在MQTT和MQTT-SN间转发所起的作用,我们可以区分出2种类型的网关:透明网关和集聚网关。
对于每个连接的MQTT-SN客户端,透明网关将会和MQTT服务端建立并维护一个MQTT连接。该MQTT连接将会单独为端到端通信保留,而且对于客户端和服务端间的消息交换是透明的。有多少MQTT-SN客户端连接到网关,在网关和服务端之间就有多少MQTT连接。透明网关在两协议间将扮演语法翻译器的角色。因为MQTT-SN客户端和MQTT服务端间的所有消息交换是端到端的,所以服务端可以向客户端提供其实现的所有功能和特性。
虽然和集聚网关比起来,透明网关的实现比较简单,但是它要求服务端支持为每个活动的客户端保持一个单独的连接。一些MQTT服务端实现可能在能支持的并发连接数上有所限制。
不同于每个连接的客户端都有一个MQTT连接,集聚网关将只有一个到服务端的MQTT连接。MQTT-SN客户端到集聚网关的所有信息交换将只到网关。由网关决定哪些信息将进一步传递到服务端。虽然集聚网关的实现比透明网关更复杂,但它在拥有大量传感器的无线传感网络中是非常有用的,因为它减少了服务端必须并发支持的MQTT连接数。
下载后直接双击安装就行 之后 进入安装目录 最好用命令行的方式 启动mosquittoexe 然后就是 编写 android 客户端代码 mqtt 是订阅/发布的方式 eoeandroid 安卓开发社区上有详细的教程,你自己可以找一下。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)