我正在构建一个 AngularJS 应用程序并使用 Paho JavaScript 客户端通过 Web 套接字连接到 MQTT 代理 (test.mosquitto.org)。这工作得很好。我想通过直接 MQTT 连接到 MQTT 代理(为了支持未启用 websocket 的代理的完整性)。
由于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);
Run Code Online (Sandbox Code Playgroud)
同样,这适用于 WebSockets(端口 8080),但是当我尝试通过直接 MQTT(端口 1883)连接时,我在控制台中从 browserMqtt.js 收到错误消息消息,而不是来自我的错误处理程序,因为它没有触发:
WebSocket connection to 'ws://test.mosquitto.org:1883/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET
Run Code Online (Sandbox Code Playgroud)
我的应用程序在 Chrome 浏览器上运行。
我想知道这是代码问题还是设计问题?是否出于某种原因无法使用 MQTT 从浏览器连接到代理,并且库正在强制调用 WebSocket?
感谢您提供任何见解,因为我从几天来阅读的所有内容中收到了混合信息,但没有明确的示例可以用作解决方案。