2

我使用 paho mqttws31.js ( http://www.eclipse.org/paho/clients/js/ ) 通过 web 应用程序中的 websockets 接收 mqtt 消息。在具有不同浏览器(chromeium、firefox ...)的电脑上,一切都非常顺利,没有任何错误。但是,当我在移动设备(如平板电脑或智能手机)上使用完全相同的源代码时,我不会收到保留的消息。当我连接到代理时,我在 onSuccess 回调中订阅了一些保留的主题。但我大部分时间都没有收到保留的消息。如前所述,这只发生在移动设备上。

提前致谢。

4

1 回答 1

1

所以对于那些不想阅读所有评论的人。这似乎是 mosquitto 与 lighttpd 结合的错误,作为 websocket-provider。

你可以做什么:

要么使用:(简单的方式)HiveMQ(http://www.hivemq.com/mqtt-over-websockets-with-hivemq/)它固有地支持websockets,所以安装很容易,但它不是开源的,因为它是用Java写的我不确定它是否和mosquitto一样快,但我绝对不知道。

或者:花一些时间编译最新版本(1.4)的mosquitto,它也原生支持websockets:http: //jpmens.net/2014/07/03/the-mosquitto-mqtt-broker-gets-websockets-support/(但到目前为止还没有发布)这个版本似乎也解决了这个问题。安装最新的蚊子: http ://goochgooch.wordpress.com/2014/08/01/building-mosquitto-1-4/

Edit0:我检查了速度,必须说带有 websockets 的 HiveMQ 比带有 websockets 的 mosquitto 快得多。当我通过 websockets 连接时,我已经注意到了,因为延迟很小。然后我向浏览器发送了 1000 个值,它们再次返回给订阅客户端。Hive 似乎比 mosquitto 快 3 倍(我必须保证这可能不是一个可靠的实验)。所以对我来说,我的决定是显而易见的,只要 mosquitto 不能与 lighttpd-websocket 支持一起正常工作,我就会继续使用 hive。很高兴听到一些意见。

Edit1:我处于两难境地:通过 lighttpd 的 Websocketsupport 非常快,比新的 mosquitto websocket 支持快得多,也比 hivemq 快。当我在树莓上运行 mqtt-broker 时,我依赖于良好的性能,因此所讨论的 Edit0 解决方案都不适合我。但是,如果我使用 lighttpd,我将面临最初描述的问题。

有人有更方便的解决方案吗?

谢谢你的帮助。

于 2014-09-21T18:16:31.187 回答