mqtt 服务器与客户端通讯

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' });
//发送消息NODEJS
console.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);

转载于:https://www.cnblogs.com/dpf-learn/p/6623429.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值