MQTT是基于tcp的,目前新的浏览器是支持websocket的,而websocket是属于tcp协议的。
你提供的MQTT.js写了是支持browser的:
The MQTT client for Node.js and the browser
看他Browser那部分:
Just like browserify, export MQTT.js as library. The exported module would be var mqtt = xxx and it will add an object in the global space. You could also export module in other formats (AMD/CommonJS/others) by setting output.libraryTarget in webpack configuration.
npm install -g webpack // install webpack
cd node_modules/mqtt
npm install . // install dev dependencies
webpack mqtt.js ./browserMqtt.js --output-library mqtt
you can then use mqtt.js in the browser with the same api than node's one.
test Ws mqtt.jsvar client = mqtt.connect(); // you add a ws:// url here
client.subscribe("mqtt/demo");
client.on("message", function(topic, payload) {
alert([topic, payload].join(": "));
client.end();
});
client.publish("mqtt/demo", "hello world!");
Your broker should accept websocket connection (see MQTT over Websockets to setup Mosca).
利用的,应该就是浏览器端的websocket,最终mqtt协议部分还是由后端处理的,浏览器端只是基于websocket进行消息发送,接收而已。