mqtt 服务器与客户端通讯。
服务器端
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/*** Created by niyl on 2016/1/13.*/var mosca = require(‘mosca‘);var MqttServer = new mosca.Server({port: 8000});/*** 验证方法***/var authenticate = function(client, username, password, callback) {//var authorized = (username.toString() === ‘18FE34F48379-DC‘ && password.toString() === ‘666666‘);var authorized = (password.toString() === ‘666666‘);if (authorized){//存储设备类型client.type = username.toString().split(‘-‘)[1];}callback(null, authorized);}//MqttServer.on(‘clientConnected‘, function(client){console.log(‘client connected‘, client.id);});/*** 监听MQTT主题消息**/MqttServer.on(‘published‘, function(packet, client) {var topic = packet.topic;// console.log(‘message-arrived--->‘,‘topic =‘+topic+‘,message = ‘+ packet.payload.toString());switch(topic){case ‘pubMsg‘:console.log(‘message-publish‘, packet.payload.toString());//MQTT转发主题消息MqttServer.publish({topic: ‘other‘, payload: ‘hello‘});//发送消息NODEJSconsole.log(‘HD: ‘);//发送socket.io消息//io.sockets.socket(YHSocketMap.get(‘1000‘)).emit(‘subState‘, packet);break;case ‘other‘:console.log(‘message-123‘, packet.payload.toString());break;case ‘order‘:console.log(‘order‘, packet.payload.toString());break;case ‘test‘:console.log(‘test‘, packet.payload.toString());break;}});MqttServer.on(‘ready‘, function(){console.log(‘mqtt is running...‘);//MqttServer.authenticate = authenticate;}); |
客户端程序
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
var mqtt = require(‘mqtt‘);var client = mqtt.createClient(8000, ‘localhost‘,{clientId:‘1‘,clean:false});//向服务器订阅一个主题client.subscribe(‘other‘,{qos:1});client.subscribe(‘test‘,{qos:1});//当消息到达时var yy=0;var ww=0;client.on(‘message‘, function (topic, message) {var tt=(message.toString());console.log(tt);switch(tt){case ‘redd‘ :ww++;console.log(10000-ww);break;case ‘hello‘ :yy++;console.log(yy);break;}});// PUBLISH-发布消息var num=0;setInterval(function (){client.publish(‘order‘, ‘ ‘ + (num++),{qos:1, retain: true});console.log("num="+num);}, 5000);setInterval(function(){client.publish(‘pubMsg‘, ‘send ‘ );// console.log("PubMsg");},10000);setInterval(function(){client.publish(‘test‘, ‘redd‘ );// console.log("test");},20000);var start=Date.now();console.log("服务端"+start); |
原文:http://www.cnblogs.com/dpf-learn/p/6623429.html