一个Web浏览器可以使用MQTT吗?

39

我们正在考虑在新设备上使用MQTT作为消息传递协议。我们还想为设备提供一个Web界面。有人知道是否可以实现一个浏览器客户端应用(无需额外插件),并且能够与MQTT通讯吗?


3
可以使用Web套接字:http://mqtt.org/wiki/doku.php/mqtt_over_websockets - Steve-o
谢谢提供信息。那么,需要什么样的Web服务器来支持WebSockets呢?我们目前使用的是Apache 2。 - fred basset
1
你打算如何解决没有离线存储的问题? - Harshit Bangar
@Steve-o 这就是为什么我拒绝使用外部网页或网站的直接链接作为答案的原因。你提供的链接页面已经不存在了。 - ThN
即使可以使用WebSocket客户端来实现,我也不建议这样做。连接的安全性可能会很麻烦。尽管如此,你可以使用像"emqx"这样的代理,它们提供了WebUI和WebSocket插件。 在前端方面,我认为使用"mqtt"包是最好的选择。 - undefined
8个回答

18

是的,正如Steve-o的评论中提到的那样,通过Websockets进行MQTT是完全可行的。

目前有两个选项:

  1. IBM的MQ 7.5支持Websockets,您可以在此处找到详细信息:这里
  2. Mosquitto代理具有带有示例的javascript客户端,运行此处

回答您的第二个问题,lighttpd具有Websockets模块,可用于转发到现有代理,详细信息在这里

我没有找到任何不需要编写自己的库来进行转发的Apache解决方案。


4
下面的链接说明了它可以处理Apache的MQTT和WebSockets: https://github.com/willem4ever/mod_websocket_mosquitto。我自己没有使用过,觉得很遗憾它不像lighttpd模块那样是一个更通用的解决方案,但就是这样! - ralight
我能在本地设置支持WebSockets通信的Mosquitto代理吗? - rns
这个问题(以及大部分回答)已经超过3年了。事情已经发生了很大变化。是的,从版本1.4开始,Mosquitto也可以构建支持Websocket的版本。 - hardillb
1
现在有另一种选择。您可以在后端使用RabbitMQ和Web-MQTT插件,并使用Eclipse Paho JS库在前端访问它。 - expz
但需要提醒的是:在RabbitMQ上,保留消息在MQTT上无法正常工作,直到修复此问题 - expz

10

要延伸hardillbs的回答,现在有第三个选择:

HiveMQ支持本地WebSockets,无需任何外部Web服务器。它与Eclipse Paho的JavaScript客户端完美配合。

如果你想尝试一下,公共MQTTDashboard(使用了HiveMQ)支持在8000端口上使用WebSockets。

披露:我是HiveMQ的开发人员之一。


HiveMQ是否支持WSS连接? - Pritam
是的,它支持WSS。请在这里查看文档:http://www.hivemq.com/docs/hivemq/2.3.1/#hivemqdocs_secure_websockets - Dominik Obermaier
连接哪个“端口”? - Pritam
1
@Pritam:这取决于您为HiveMQ配置安全WebSockets的端口。目前,MQTTDashboard不支持安全WebSockets。 - Dominik Obermaier
实际上我是在询问 HiveMQ 的 _MQTTDashboard_。我想在 http://www.hivemq.com/demos/websocket-client/ 上测试安全连接。 - Pritam

5

3

我们已经使用过WSS,这是一个WebSocket到TCP网关(适用于MQTT)的工具。这意味着需要运行一个单独的进程,但避免了更改Apache配置的麻烦。WSS还支持TLS。


2

2

1
为什么不用 nodejs + socket.io?它们包含了所有的小工具(WebSocket、发布/订阅、Web服务器、MQTT代理......)。 SocketCluster 是另一个很好的起点。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接