MQTT的JavaScript客户端不使用WebSocket

MQTT的JavaScript客户端不使用WebSocket,javascript,angularjs,websocket,mqtt,Javascript,Angularjs,Websocket,Mqtt,我正在构建一个AngularJS应用程序,并使用Paho JavaScript客户端通过web套接字连接到MQTT代理(test.mosquito.org)。这个很好用。我希望通过直接MQTT连接到MQTT代理(为了支持未启用WebSocket的代理的完整性) 由于Paho客户端不支持直接MQTT,因此我尝试了MQTT.js(browserMqtt.js)的browserified版本 以下是我的代码中的主线: //var options = { host: "test.mosquitto.or

我正在构建一个AngularJS应用程序,并使用Paho JavaScript客户端通过web套接字连接到MQTT代理(test.mosquito.org)。这个很好用。我希望通过直接MQTT连接到MQTT代理(为了支持未启用WebSocket的代理的完整性)

由于Paho客户端不支持直接MQTT,因此我尝试了MQTT.js(browserMqtt.js)的browserified版本

以下是我的代码中的主线:

//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);
同样,这在WebSocket(端口8080)上也有效,但是当我尝试通过直接MQTT(端口1883)连接时,我在控制台中从browserMqtt.js获得错误消息,而不是从我的错误处理程序,因为它没有触发:

WebSocket connection to 'ws://test.mosquitto.org:1883/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET
我的应用程序正在Chrome浏览器上运行

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


如果您有任何见解,我将不胜感激,因为我从几天来阅读的所有内容中得到了混杂的消息,但没有一个明确的示例可以用作解决方案。

WebSocket是浏览器支持的协议,而不是普通的TCP套接字(如果您想直接运行MQTT,最终需要它)

浏览器部分中的MQTT.js文档:

您的代理应该接受websocket连接


因此,没有办法从浏览器上通过WebSocket使用MQTT。您可以创建一个(服务器端)代理,该代理将接受WebSocket连接,并使用普通MQTT协议将其传递给目标代理。

将连接地址从
ws://test.mosquitto.org:1883
更改为
mqtt://test.mosquitto.org:1883

日食泛美卫生组织怎么样?@KevinRED根据,它支持WebSocket,但不支持标准TCP。这不起作用,如果您在浏览器中运行,则只能使用WebSocket进行连接,浏览器沙盒将不允许访问本机套接字以进行连接。我在localhost中测试了它,并已工作。我不知道