【问题标题】:Difference between MQTT over WebSocket and SSE(Server Send Event)MQTT over WebSocket 和 SSE(服务器发送事件)的区别
【发布时间】:2016-03-16 23:27:39
【问题描述】:

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

【问题讨论】:

    标签: websocket mqtt


    【解决方案1】:

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

    MQTT 是一种发布/订阅协议,可以通过低级传输实现。例如,MQTT 可以通过 TCP/IP 或 WebSocket 运行。 MQTT 具有 QoS 级别,它也给您确认(即,可靠性)。 MQTT 通常不是浏览器原生的,因此在连接到浏览器之前必须使 MQTT 消息对网络友好……通常是 WebSocket,因为 WS 是一个“胖管道”,在某种程度上类似于 TCP。

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

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

    【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多