nodejs中搭建mqtt

使用nodejs编写一个简单的服务器,然后在编写两个客户端,一个客户端用来接收消息,另一个客户端用来发送消息:

服务器代码为:不过,你第一次运行的时候,会缺少mosca模块,自己npm install mosca即可。具体功能,学过编程的大致都能看懂,然后里面都有注释。

var mosca = require('mosca');//构建服务器
/*var settings = {
	port:8989,
	backend:{
		type:'zmq',
		json:false,
		zmq:require("zmq"),
		port:"tcp://127.0.0.1:33334",
		controlPort:"tcp://127.0.0.1:33334",
		delay:5
	},
	persistence: {
		factory:mosca.persistence.Mongo,
		url:"mongodb://localhost:270117/mosca"
	}
};
var MqttServer = new mosca.Server(settings);*/
var MqttServer = new mosca.Server({
	port:8000
});

//监听链接
MqttServer.on("clientConnected",function(client) {
	console.log("client connected",client.id);
});
//监听mqtt的主题消息
MqttServer.on("published",function(packet,client) {//当客户端有连接的时候,发布主题消息
	var topic = packet.topic;
	console.log(packet);
	switch(topic) {
		case 'test':
			console.log("message-publish",packet.payload.toString());
			//mqtt转发主题消息
			MqttServer.publish({topic:'other',payload:'这是服务端!'});
			break;
		case 'test2':
			console.log("payload:",packet.payload.toString());
			var msg = {
				topic:'repeat',
				payload:packet.payload,
				qos:0,
				retain:false
			};
			MqttServer.publish(msg,function() {
				console.log('repeat!   ');
			});
			break;
		case 'other':
			console.log("case-other:",packet.payload.toString());
			break;
	}
});
MqttServer.on('ready',function() {
	console.log("mqtt is running....");
});

发送消息客户端:

var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://192.168.1.136:8000');//连接到服务端
var num = 0;
var qtt = {};//定义消息(可以为字符串,对象等)
qtt.aa = '发布';
qtt.bb = '消息!';

setInterval(function() {
	//发布主题为Test的消息
	client.publish('test',JSON.stringify(qtt),{qos:1,retain:true});//hello mqtt + num++
},1000);
接收消息的客户端;

var mqtt = require('mqtt');
var client2 = mqtt.connect("mqtt://192.168.1.136:8000");

client2.subscribe('test',{qos:1});//订阅主题为test的消息

client2.on('message',function(top,message) {
	console.log(message.toString());
});
至此第一个简单的nodejs版的mqtt的demo已经搭建完毕,后期具体的开发,见后文的博客!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值