繁体   English   中英

MQTT over WebSocket和SSE(服务器发送事件)之间的区别

[英]Difference between MQTT over WebSocket and SSE(Server Send Event)

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

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 /应用程序服务器所了解的密码。

MQTT提供3种不同的QOS级别来控制消息的传递

QOS 0 - 尽力而为QOS 1 - 至少一次QOS 2 - 仅一次

MQTT支持用户身份验证和主题级ACL,因此您可以确保用户只能看到即使使用通配符订阅也需要查看的内容

MQTT还允许直接连接到后端系统,而无需在WebApp中进行桥接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM