首页 > 如何通过javascript 使用 MQTT?

如何通过javascript 使用 MQTT?

我现在想通过javascript使用MQTT , 但是在这里找到的MQtt.js需要使用node.js ,
有没有的方法通过javascript使用MQTT?


MQTT属于tcp长连接。如果在浏览器上使用,需要使用websocket,http是不行的而且使用websocket来做的话MQTT服务端还要进行修改以支持websocket


不需要 nodejs emqtt 有js


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进行消息发送,接收而已。


mqtt的一些服务器是不支持websocket的

之前的做法是通过socket.io做中转,websocket连接到socekt.io上,后台nodejs再连接到mqtt server上

【热门文章】
【热门文章】