如何在Mosquitto中启用TCP和Web套接字?

时间:2015-12-22 04:52:12

标签: sockets tcp mqtt mosquitto

我使用Paho Library通过MQTT实现消息传递。在我的mosquitto.conf文件中,我有以下内容:

listener 1883
protocol websockets

此配置适用于Web应用程序。当我尝试使用Android和iOS与TCP连接时,它会出现错误,"连接超时"。当我停用protocol websockets行时,它正在使用Android和iOS,但网页无法连接。

当我尝试测试MQTT服务器test.mosquitto.org时,一切正常。

请告诉我,我需要它与Android,iOS和Web应用程序一起使用,支持WebSockets和TCP连接。

2 个答案:

答案 0 :(得分:6)

您需要定义两个侦听器,一个用于mqtt over tcp,另一个用于websockets:

# this will listen for mqtt on tcp
listener 1883

# this will expect websockets connections
listener 8080
protocol websockets

答案 1 :(得分:1)

简而言之:

  • 在网页(javascript)上,您需要支持websocket。
  • 在Android / iOS上,您可以使用标准TCP侦听器。

Mosquitto,如果你在本地或服务器上运行它,很可能没有websocket支持(即使你在配置中提供它)。 Websocket支持可以在编译时定义。如果在编译版本时未定义,则不会支持它。

来自Mosquitto broker conf docs“默认情况下,编译时会禁用Websockets支持。”

因此,您需要使用websocket支持从源代码构建mosquitto版本。网上有很多资源可以帮助你解决这个问题。

我在this blog post中写了我的经验。