我们正在考虑在我们正在构建的新设备上使用 MQTT 作为消息传递协议。我们还想要该设备的 Web 界面。有谁知道您是否可以实现与 MQTT 对话的浏览器客户端应用程序(无需额外插件)?
8 回答
要扩展 hardillbs 答案:
现在有第三种选择:
HiveMQ支持本机 websocket,无需任何外部 web 服务器。它与Eclipse Paho的 Javascript 客户端完美配合。
如果您想尝试一下,公共MQTTDashboard(在后台使用 HiveMQ)支持端口 8000 上的 websocket。
披露:我是 HiveMQ 的开发人员之一
IBM 发布了一个基于 WebSockets 的 JavaScript 客户端。它在 Eclipse Paho 上是开源的。
Git 存储库: http: //git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/
我们有很好的使用WSS的经验,WebSocket to TCP Gateway (for MQTT)。这意味着运行一个单独的进程,但这确实避免了更改 Apache 的配置。WSS 还支持 TLS。
不是 Apache,但您可以按照本指南使用 mod_websocket 安装 lighttpd,
但为了易于使用,我强烈推荐 HiveMQ,正如@Dominik 推荐的那样。
jpmens的博客是使用 websocket 功能设置 mosquitto 的一个很好的起点。他基于 Paho 的客户端 javascript 代码在 github 上。
这篇博客“如何在同一个 por 上运行您的 Web 服务器和 MQTT WebSockets 代理”解释了服务器端的两种方式:
- 带有 http 配置的 mosquitto
- apache+mod_websocket_mosquitto
为什么不nodejs
+ socket.io
?它们附带了所有的小工具(webscokets、pub/sub、webserver、mqtt broker...)。
SocketCluster是另一个很好的起点。
此链接(下载代码)很有用。下载并修改此文件 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));