2015-10-18 9 views
0

Я использую socket.io, node.js и client.js клиент MQTT для подключения к брокеру, запущенному на A-MQ со страницы HTMLS. Я могу успешно подключиться к брокеру и подписаться на темы, которые мне нужны, но я никогда не получаю никаких сообщений из тем, хотя некоторые из них находятся в очереди.Сообщения, не полученные с помощью node.js Клиент MQTT с socket.io

Вот мой код:

subscribe.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:[email protected]//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) 

никогда не выполняются.

Любые мысли?

Спасибо, Ted

ответ

0

Предполагая, что вы используете клиент MQTT от НОГО (https://www.npmjs.com/package/mqtt), то клиент MQTT должен иметь на «сообщение» обратный вызов набор для обработки входящих сообщений, а не mqttData слушателя

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

Спасибо hardillb. Я одновременно видел это в другом посте, когда я читал ваш ответ. Это была проблема. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^