簡體   English   中英

使用node.js MQTT客戶端和socket.io未收到消息

[英]Messages not received using node.js MQTT client with socket.io

我正在使用socket.io,node.js和node.js MQTT客戶端從HTMLS頁面連接到在A-MQ上運行的代理。 我可以成功連接到代理並訂閱所需的主題,但是即使有幾個入隊,我也從未從該主題獲得任何消息。

這是我的代碼:

subscription.js

var sys = require('sys');
var net = require('net');
var mqtt = require('mqtt');

var io  = require('socket.io').listen(5000);
io.set('origins', '*:*');

var client = mqtt.connect("mqtt:admin:admin@//localhost:1883");

io.sockets.on('connection', function (socket) {
  socket.on('subscribe', function (data) {
    console.log('Subscribing to '+data.topic);
    socket.join(data.topic);
    client.subscribe(data.topic);
  });
});

client.addListener('mqttData', function(topic, payload){
  sys.puts(topic+'='+payload);
  io.sockets.emit('mqtt',{'topic':String(topic),
    'payload':String(payload)});
});

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>IoT Demo</title>
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="js/socket.io.js"></script>
<script type="text/javascript">
  var socket = io.connect('http://localhost:5000');
    socket.on('connect', function () {
      socket.on('mqtt', function (msg) {
        var elmarr=msg.topic.split("/");
        var elm=elmarr[3];
        console.log(msg.topic+' '+msg.payload);
        $('#'.concat(elm)).html(msg.payload);
     });
     socket.emit('subscribe',{topic:'customerenter'});
     socket.emit('subscribe',{topic:'customermove'});
     socket.emit('subscribe',{topic:'customerexit'});
    });
</script>
</head>
<body>
<div style="position: absolute; top: 5px; left: 5px;">
</div>
</body>
</html>

當我在Chrome中調試時,

socket.on('mqtt', function (msg)

永遠不會執行。

有什么想法嗎?

謝謝,特德

假設您使用npm( https://www.npmjs.com/package/mqtt )的Mqtt客戶端,則mqtt客戶端應設置on'message'回調來處理傳入消息,而不是mqttData偵聽器

client.on('message', function(topic, message){
  sys.puts(topic+'='+message);
  io.sockets.emit('mqtt',{'topic':String(topic),
    'payload':String(message)});
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM