大家好,又见面了,我是你们的朋友全栈君。
前言
mqtt协议介绍一
mqtt协议介绍二
图片来自https://www.jianshu.com/p/9e74287e3b07
正文
安装nodejs
下载安装即可。
安装mqtt.js模块
新建一个文件夹,打开cmd,npm install mqtt --save
,这里很有可能能会报错,百度一下就可以解决。
安装好mqtt.js模块后,文件夹中会多两个文件出来。
搭建服务器
mqttserver.js源码
代码语言:javascript复制var mosca = require('mosca');
//构建自带服务器
var MqttServer = new mosca.Server({
port: 1883
});
//对服务器端口进行配置, 在此端口进行监听
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...');
});
node mqttserver.js
开启服务器
服务器运行成功。
开启订阅
subclient.js源码
代码语言:javascript复制var mqtt = require('mqtt');
var client2 = mqtt.connect("mqtt://127.0.0.1:1883"); //指定服务端地址和端口
client2.subscribe('test',{
qos:1});//订阅主题为test的消息
client2.on('message',function(top,message) {
console.log(message.toString());
});
node subclient.js
开启订阅
开启发布
pubclient.js源码
代码语言:javascript复制var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://127.0.0.1'); //连接到服务端
//client.subscribe('presence');
var num = 0;
var qtt = {
}; //定义消息(可以为字符串、对象等)
qtt = 'helloworld';
setInterval(function() {
//3秒钟发送一次 消息到主题 SN69143809293670state 消息为helloworld
client.publish('test', qtt, {
qos: 0, retain: true });
}, 3000);
node pubclient.js
开启发布
此时,会发现如下结果
服务器
[
订阅方
说明mqtt服务器搭建成功。
实验体会
讲一下MQTT一个通俗的理解。
MQTT服务器类似一个公告栏,里面张贴了各种广告。
张三跑过来说,凡是涉及足球的(/public/TEST/Soccer)的都发给自己(订阅)
第二天,李四过来贴广告了,主题是(/public/TEST/Soccer),发布的内容是“30号有比赛”
此时,公告栏(MQTT服务器)会自动发短信给张三,发送的信息为 “30号有比赛”。
实验流程分析:
1、实验中,mqtt服务器上有两个主题的信息test和other
2、订阅方发布一个主题为test的订阅,当mqtt也会得到这个这个主题的信息时,就会发给订阅方
3、发布方发布一个主题为test的信息到mqtt服务器
4、当mqtt服务器得知与订阅方相匹配的订阅时,会把这个主题消息的内容发给订阅方。
初学者,有问题请指正。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140754.html原文链接:https://javaforall.cn