【问题标题】:Can a web browser use MQTT?Web 浏览器可以使用 MQTT 吗?
【发布时间】:2013-04-09 11:11:02
【问题描述】:

我们正在考虑在我们正在构建的新设备上使用 MQTT 作为消息传递协议。我们还想要该设备的 Web 界面。有谁知道您是否可以实现一个与 MQTT 对话的浏览器客户端应用程序(无需额外插件)?

【问题讨论】:

  • 是的,使用网络套接字:mqtt.org/wiki/doku.php/mqtt_over_websockets
  • 感谢您的信息。那么需要什么样的网络服务器来支持 websockets?我们目前使用 Apache 2。
  • 如果没有离线存储,您将如何工作。
  • @Steve-o 这正是我拒绝使用指向外部网页或网站的直接链接作为答案的原因。您链接到的页面已不存在。

标签: mqtt


【解决方案1】:

是的,正如 Steve-o 的评论中提到的,MQTT via websockets 是非常可能的。

目前有两种选择

  1. IBM 的 MQ 7.5 自带 websockets 支持,详情请见here
  2. Mosquitto 代理有一个 JavaScript 客户端,其中包含一个运行 here 的示例。

为了回答您的第二个问题,lighttpd 有一个 websockets 模块,可用于将详细信息 here 转发到现有代理。

我找不到任何不需要您编写自己的库来进行转发的 Apache。

【讨论】:

  • 以下链接说它处理 Apache 的 MQTT 和 WebSockets:github.com/willem4ever/mod_websocket_mosquitto 我自己没有使用过它,并且认为它不是像 lighttpd 模块那样更通用的解决方案,但你去吧!
  • 我可以在本地设置支持 Web 套接字通信的 Mosquitto 代理吗?
  • 这个问题(以及大多数答案)已经超过 3 年了。事情发生了很大的变化。是的,从 1.4 版开始,Mosquitto 也可以使用 Websocket 支持构建
  • 现在有另一种选择。您可以在后端使用带有Web-MQTT plugin 的RabbitMQ,并在前端使用Eclipse Paho JS Library 访问它。
  • 但请注意:在修复此issue 之前,保留的消息在 RabbitMQ 上的 MQTT 上不起作用。
【解决方案2】:

扩展 hardillbs 答案:

现在有第三种选择:

HiveMQ 支持本机 websocket,无需任何外部 web 服务器。它与Eclipse Paho的Javascript客户端完美配合。

如果您想尝试一下,公共MQTTDashboard(在后台使用 HiveMQ)支持端口 8000 上的 websocket。

披露:我是 HiveMQ 的开发者之一

【讨论】:

【解决方案3】:

IBM 发布了基于 WebSockets 的 JavaScript 客户端。它在 Eclipse Paho 上是开源的。

Git 存储库: http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/

教程在这里。 https://www.ibm.com/developerworks/community/blogs/c565c720-fe84-4f63-873f-607d87787327/entry/how_to_prog_javascript?lang=en

【讨论】:

    【解决方案4】:

    我们在使用WSSWebSocket 到 TCP 网关(用于 MQTT)方面有很好的经验。这意味着运行一个单独的进程,但这确实避免了更改 Apache 的配置。 WSS 还支持 TLS。

    【讨论】:

      【解决方案5】:

      不是 Apache,但您可以按照本指南使用 mod_websocket 安装 lighttpd,

      http://oriolrius.cat/blog/2013/09/25/server-send-push-notifications-to-client-browser-without-polling/

      但为了易于使用,我强烈推荐 HiveMQ,正如 @Dominik 推荐的那样。

      【讨论】:

        【解决方案6】:

        blog by jpmens 是使用 websocket 功能设置 mosquitto 的良好起点。他是client javascript code based on Paho is on github

        这个blog "How to run your web server and MQTT WebSockets broker on the same por"解释了服务器端的两种方式:

        • 带有 http 配置的 mosquitto
        • apache+mod_websocket_mosquitto

        【讨论】:

          【解决方案7】:

          为什么不nodejs + socket.io?它们附带所有小工具(webscokets、pub/sub、webserver、mqtt broker...)。 SocketCluster 是另一个很好的起点。

          【讨论】:

            【解决方案8】:

            此链接 (Download codes) 很有用。下载并修改此文件 mosq-mqttws31.html。而不是嵌入的 java 脚本库使用这个 cdn

            https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js

            并且客户端实例化应该是 client = new Paho.MQTT.Client("test.mosquitto.org", 8080,"myclien256tiddd_" + parseInt(Math.random() * 100, 10));

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-01-13
              • 2016-10-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多