我现在想通过javascript使用MQTT , 但是在这里找到的MQtt.js需要使用node.js ,
有没有的方法通过javascript使用MQTT?
我现在想通过javascript使用MQTT , 但是在这里找到的MQtt.js需要使用node.js ,
有没有的方法通过javascript使用MQTT?
MQTT属于tcp长连接。如果在浏览器上使用,需要使用websocket,http是不行的而且使用websocket来做的话MQTT服务端还要进行修改以支持websocket
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.
<html>
<head>
<title>test Ws mqtt.js</title>
</head>
<body>
<script src="./browserMqtt.js"></script>
<script>
var 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!");
</script>
</body>
</html>
Your broker should accept websocket connection (see MQTT over Websockets to setup Mosca).
利用的,应该就是浏览器端的websocket,最终mqtt协议部分还是由后端处理的,浏览器端只是基于websocket进行消息发送,接收而已。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
mqtt的一些服务器是不支持websocket的
之前的做法是通过socket.io做中转,websocket连接到socekt.io上,后台nodejs再连接到mqtt server上