我是靠谱客的博主 丰富导师,这篇文章主要介绍MQTT协议在nodejs中的使用,现在分享给大家,希望可以做个参考。

MQTT协议在物联网中的位置就不用说了,搞物联网开发能够使用这个协议就好像在打篮球懂得如何快速、巧妙传球一样,各个部件之间的消息传递变得非常简单方便,本人菜鸟也能发现其中的优势,如果有朝一日成为牛肉能够深入了解,觉得将会前途一片光明。废话少说,下面从一个肉菜鸟的角度开始解释这个协议在NODEJS下的简单应用。

首先,MQTT的优势大家应该都了解了,本协议特点是轻量级(开销很小,固定长度的头部是 2 字节)、基于代理的“发布/订阅”模式的消息传输、协议简洁、小巧、可扩展性强、省流量、省电,并且主要针对物联网条件下不可靠、低计算能力的网络传输条件下,目前已经应用到企业领域,同时也有一定的缺点,例如网上有人扯淡说这个协议不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高,然而这个在nodejs上却不成立,服务端只需要有nodejs运行环境就可以非常方便的搭建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
var mosca = require('mosca');//构建自带服务器 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: 'sssss'}); break; case 'other': console.log('message-123', packet.payload.toString()); break; } }); MqttServer.on('ready', function(){当服务开启时 console.log('mqtt is running...'); });
当mosca服务构建完成以后,可以对消息进行发布,代码如下 

复制代码
1
2
3
4
5
6
7
8
9
10
var mqtt = require('mqtt'); var client = mqtt.connect('mqtt://192.168.0.182:8000');//连接到服务端 //client.subscribe('presence'); var num = 0; var qtt={};//定义消息(可以为字符串、对象等) qtt.aa='asds'; qtt.bb='地方'; setInterval(function (){//发布主题为‘test’的消息 client.publish('test',JSON.stringify(qtt),{qos:1, retain: true});// 'Hello mqtt ' + (num++) }, 1000);
然后在其他客户端能够对消息进行订阅

复制代码
1
2
3
4
5
6
7
8
9
10
11
复制代码
var mqtt = require('mqtt');
var client= mqtt.connect('mqtt://192.168.0.182:8000');
client.subscribe('test',{qos:1});//订阅主题为test的消息
client.on('message', function (topic, message) {
console.log(message.toString());
});

于是这个简单的MQTT协议就在nodejs中实现了


复制代码
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
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: 'sssss'}); break; case 'other': console.log('message-123', packet.payload.toString()); break; } }); MqttServer.on('ready', function(){当服务开启时 console.log('mqtt is running...'); });
复制代码
1
2
复制代码
1
2
复制代码
1
2
复制代码
1
2
复制代码
1
2
复制代码
1
2

最后

以上就是丰富导师最近收集整理的关于MQTT协议在nodejs中的使用的全部内容,更多相关MQTT协议在nodejs中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部