gpt4 book ai didi

MQTT 的 JavaScript 客户端不使用 WebSockets

转载 作者:行者123 更新时间:2023-11-29 10:06:12 24 4
gpt4 key购买 nike

我正在构建 AngularJS 应用程序并使用 Paho JavaScript 客户端通过网络套接字连接到 MQTT 代理 (test.mosquitto.org)。这很好用。我想通过直接 MQTT 连接到 MQTT 代理(为了支持没有启用 websockets 的代理的完整性)。

由于 Paho 客户端不支持直接 MQTT,我尝试了浏览器版本的 mqtt.js (browserMqtt.js)。

这是我的代码的主要内容:

//var options = { host: "test.mosquitto.org", port: 8080 }; //works!
var options = { host: "test.mosquitto.org", port: 1883 }; //does not work!
var client = mqtt.connect(options);

同样,这适用于 WebSockets(端口 8080),但是当我尝试通过直接 MQTT(端口 1883)连接时,我在控制台中收到来自 browserMqtt.js 的错误消息,而不是来 self 的错误处理程序不开火:

WebSocket connection to 'ws://test.mosquitto.org:1883/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET

我的应用在 Chrome 浏览器上运行。

我想知道这是代码问题还是设计问题?是否出于任何原因无法使用 MQTT 从浏览器连接到代理并且库正在强制调用 WebSocket?

感谢您提供任何见解,因为我从几天来阅读的所有内容中得到了混合信息,但没有明确的示例可以用作解决方案。

最佳答案

WebSocket 是一种浏览器支持的协议(protocol),与普通的 TCP 套接字相反(如果您想直接运行 MQTT,您最终会需要它)。

MQTT.js 文档 states浏览器部分:

Your broker should accept websocket connection

因此,没有办法绕过浏览器必须通过 WebSocket 使用 MQTT。您可以创建一个(服务器端)代理,它接受 WebSocket 连接,使用普通 MQTT 协议(protocol)将它们传递给目标代理。

关于MQTT 的 JavaScript 客户端不使用 WebSockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42746139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com