Sockets 如何在MOSQUITO中同时启用TCP和web套接字?

Sockets 如何在MOSQUITO中同时启用TCP和web套接字?,sockets,tcp,mqtt,mosquitto,Sockets,Tcp,Mqtt,Mosquitto,我使用Paho库通过MQTT实现消息传递。在我的mosquitto.conf文件中,我有以下内容: listener 1883 protocol websockets 此配置适用于web应用程序。当我尝试使用Android和iOS连接TCP时,它给出了一个错误,“连接超时”。当我禁用协议websockets行时,它可以与Android和iOS一起工作,但是网页无法连接 当我尝试测试MQTT服务器test.mosquitto.org时,一切正常 请告诉我,我需要它与Android、iOS和web

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

listener 1883
protocol websockets
此配置适用于web应用程序。当我尝试使用Android和iOS连接TCP时,它给出了一个错误,“连接超时”。当我禁用
协议websockets
行时,它可以与Android和iOS一起工作,但是网页无法连接

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


请告诉我,我需要它与Android、iOS和web应用程序一起工作,同时支持WebSocket和TCP连接。

您需要定义两个侦听器,一个用于TCP上的mqtt,另一个用于WebSocket:

# this will listen for mqtt on tcp
listener 1883

# this will expect websockets connections
listener 8080
protocol websockets
简言之:

  • 在web(javascript)上,您需要websocket支持
  • 在Android/iOS上,您可以使用标准TCP侦听器
MOSQUITO,如果您在本地或服务器上运行它,很可能没有websocket支持(即使您在配置中提供了它)。 Websocket支持可以在编译时定义。如果在编译您的版本时没有定义它,您将无法获得对它的支持

来自:“Websockets支持当前在编译时默认禁用。”

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


我已经在中记录了我的使用经验。

谢谢你的回复。我会调查的。谢谢你的回复。在我的服务器中,8080没有启用。我现在就检查一下。8080只是一个例子,它可以是任何东西。关键是,您不能在同一端口上使用正常的mqtt和WebSocket。当我尝试上述操作时,会出现错误“连接失败:AMQJS0007E套接字错误:未定义。重试”。当我重新启动服务器并尝试时,它现在可以工作了。非常感谢。使用此新配置启动代理后(
mosquitto-c/etc/mosquitto/mosquitto.conf
),WebSocket不需要自己构建mosquitto,它使用的是来自