通过WebSocket的MQTT与SSE(服务器发送事件)之间的区别

GPr*_*hap 4 websocket mqtt

当直接从Web服务器向Web浏览器发布消息或订阅消息时(反之亦然),我们可以在WebSockets上使用MQTT。同时,SSE(半双工)可用于将数据从Web服务器推送到Web浏览器。其他主要区别是什么?特别是相关的应用程序的安全性和一致性。

Fra*_*nkG 5

WebSocket是由IETF标准化的低级(成帧)传输和由W3C标准化的JavaScript API。它不是发布/订阅。您可以具有位于WebSocket“顶部”的发布/订阅协议。例如,AMQP是可以通过WebSocket实现的发布/订阅协议。另一个示例是Java消息服务(JMS);尽管JMS是API而非位协议,但它可以通过pub / sub协议实现,而pub / sub协议又可以通过WS实现。我提到AMQP和JMS都是因为AMQP协议和JMS API都提供了“确认”,与其他机制不同,这将为您提供高度的可靠性。

MQTT是可以通过低级传输实现的发布/订阅协议。例如,MQTT可以通过TCP / IP或WebSocket运行。MQTT具有QoS级别,该级别也为您提供确认(即,可靠性)。MQTT通常不是浏览器的本机,因此必须先将MQTT消息变成Web友好的,然后再连接到浏览器……通常是WebSocket,因为WS是“胖管道”并且在某种程度上类似于TCP。

服务器发送事件(SSE)是“ Comet”(或“反向AJAX”)技术的HTML5形式化。“ Comet”是非正式技术的松散集合;不同的实现方式无法协同工作。SSE不能发布/订阅。一种HTTP机制,用于将数据从服务器广播到浏览器客户端,从本质上讲,是一种即发即弃的技术。

大多数现代浏览器都可以理解SSE和WS(IE / EDGE当前不支持SSE)。他们通常也都了解Secure WebSocket(WSS)。几乎所有的Web服务器和应用服务器都了解SSE和WS / WSS。如果使用WSS,您的数据将在传输过程中被加密。在连接上设置了特定的加密密码。您必须研究浏览器客户端和Web /应用服务器理解的密码。