使用node.js MQTT client和socket.io未收到消息
我使用socket.io、node.js和node.js MQTT客户机从HTMLS页面连接到a-MQ上运行的代理。我可以成功地连接到代理并订阅我需要的主题,但我从未从主题收到任何消息,即使有几个主题已排队 这是我的密码: subscribe.js使用node.js MQTT client和socket.io未收到消息,node.js,socket.io,messages,mqtt,Node.js,Socket.io,Messages,Mqtt,我使用socket.io、node.js和node.js MQTT客户机从HTMLS页面连接到a-MQ上运行的代理。我可以成功地连接到代理并订阅我需要的主题,但我从未从主题收到任何消息,即使有几个主题已排队 这是我的密码: subscribe.js var sys = require('sys'); var net = require('net'); var mqtt = require('mqtt'); var io = require('socket.io').listen(5000);
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>
永远不会被执行
有什么想法吗
谢谢,
Ted假设您使用来自npm()的Mqtt客户机,那么Mqtt客户机应该有一个on“message”回调设置来处理传入消息,而不是mqttData listener
client.on('message', function(topic, message){
sys.puts(topic+'='+message);
io.sockets.emit('mqtt',{'topic':String(topic),
'payload':String(message)});
});
谢谢hardillb。当我读到你的答案时,我同时在另一篇文章中看到了这一点。这就是问题所在
client.on('message', function(topic, message){
sys.puts(topic+'='+message);
io.sockets.emit('mqtt',{'topic':String(topic),
'payload':String(message)});
});