如何通过javascript 使用 MQTT?

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

阅读 13.6k
4 个回答

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

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

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

不需要 nodejs emqtt 有js

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题