Websocket连接MQTT HiveMQ

为什么选择网络套接字

Websockets已经存在很长时间了。有许多竞争的websocket实现,几乎每个浏览器都有其自己的实现特定特性。如今,大多数相关的浏览器都支持websocket。与使用(长)轮询时所需的经典HTTP请求相比,Websocket在带宽和延迟方面的开销很小。这种开销尽可能少的理念非常适合MQTT。

通过Websockets上的MQTT,每个浏览器都可以成为MQTT设备。由于MQTT的发布/订阅模式,只要您订阅了正确的主题,就会在事件发生时(实际上是世界上的任何地方)实时推送到浏览器。使用MQTT,您可以在标准的websocket推送之上获得以下功能:

  • 服务语义的质量:当使用QoS的1 / 2,你的客户或经纪在您的邮件到达至少一次/只出现一次的保证。
  • 队列:使用QoS 1或2和持久会话时,代理将在客户端未连接时将客户端从其订阅中丢失的所有消息排队。重新连接后,所有消息都会立即传递给您的客户端。
  • 保留的消息:当您的客户端立即订阅这些主题之一时,将保留服务器上保留的消息。
  • 最后遗嘱:如果您的客户没有正常断开连接,则可以向主题发布消息,以通知感兴趣的所有人您的客户死亡。
  • 如果您的客户端通过持久会话连接到代理,则无需重新订阅客户端感兴趣的所有主题,因为以前的所有订阅都存储在服务器上。

websocket和MQTT如何配合在一起?

通过websocket发送的消息以帧的形式发送。这些帧只有2个字节的开销。现在,整个MQTT消息(及其所有标头和有效负载)都与websocket框架一起发送。

网络套接字

Websocket框架中的MQTT消息

HiveMQ希望每条MQTT消息都在一个websocket框架中发送。诸如Paho.js之类的常见Javascript MQTT库实现了此行为。

本机Websocket

HiveMQ实现所有的WebSocket标准(包括RFC6555,所有hixie和所有hybi草案)本身。这意味着,您不需要在HiveMQ MQTT代理实例前面的专用Web服务器来转发WebSocket连接。HiveMQ透明地处理HTTP Websocket升级和实际Websocket。代理将通过websocket的MQTT客户端连接视为等同于通过“纯TCP”的连接。

带有HiveMQ的Websocket-无需其他Web服务器

对于HiveMQ 3.x

编辑config.xml文件:

 
<?xml version="1.0"?>
<hivemq xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="../../hivemq-config.xsd">

   <listeners>
      <websocket-listener>
          <port>8000</port>
          <bind-address>0.0.0.0</bind-address>
          <path>/mqtt</path>
          <subprotocols>
              <subprotocol>mqttv3.1</subprotocol>
              <subprotocol>mqtt</subprotocol>
          </subprotocols>
          <allow-extensions>true</allow-extensions>
      </websocket-listener>
       ...
   </listeners>
    ...
</hivemq>

 

 

参考:https://www.hivemq.com/docs/hivemq/3.4/user-guide/introduction.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值