客户端发布消息代码:
var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://localhost:8000');
//client.subscribe('presence');
var num = 0;
var qtt={};
qtt.aa='asds';
qtt.bb='地方';
setInterval(function (){
client.publish('test',JSON.stringify(qtt),{qos:1, retain: true});// 'Hello mqtt ' + (num++)
client.publish('aaa','JSON.stringify(qtt)',{qos:1, retain: true});// 'Hello mqtt ' + (num++)
}, 5000);
客户端接受topic消息代码
var mqtt = require('mqtt');
var client= mqtt.connect('mqtt://localhost:8000');
client.subscribe('test',{qos:1});//订阅主题为test的消息
client.subscribe('aaa',{qos:1});//订阅主题为test的消息
client.on('message', function (topic, message) {
console.log('sub',message.toString(),topic);
});
mosca服务器代码
var mosca = require('mosca');
var server = new mosca.Server({
port: 8000
});
server.on('ready', setup);
function setup() {
console.log('Mosca server is up & running');
}
server.on('clientConnected', function (client) {
console.log('Client Connected: ', client.id);
});
server.on('clientDisconnected', function (client) {
console.log('Client Disconnected: ', client.id);
});
server.on('published', function (packet, client) {
// console.log('Published: ', packet);
switch (packet.topic) {
case 'test':
console.log("payload: ", packet.payload.toString());
var msg = {
topic: 'repeat',
payload: packet.payload,
qos: 0,
retain: false
};
server.publish(msg, function () {
console.log('repeat! ');
});
break;
case 'aaa':
console.log("payload: ", packet.payload.toString());
var msg = {
topic: 'repeat',
payload: packet.payload,
qos: 0,
retain: false
};
server.publish(msg, function () {
console.log('repeat! ');
});
break;
}
});
为什么发布消息的客户端发送的topic为test,接受端订阅的也是test,但是服务器端监听case为test,但发布消息的topic为repeat,为何接受端能接受到消息?服务端发布消息的topic不应该为test才能接受到消息吗?