前言
物联网安全实践四
mqtt协议介绍一
mqtt协议介绍二
图片来自https://www.jianshu.com/p/9e74287e3b07
正文
安装nodejs
下载安装即可。
安装mqtt.js模块
新建一个文件夹,打开cmd,npm install mqtt --save
,这里很有可能能会报错,百度一下就可以解决。
安装好mqtt.js模块后,文件夹中会多两个文件出来。
搭建服务器
mqttserver.js源码
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
| var mosca = require('mosca');
var MqttServer = new mosca.Server({ port: 1883 });
MqttServer.on('clientConnected', function(client) { console.log('client connected', client.id); });
MqttServer.on('published', function(packet, client) { var topic = packet.topic; console.log(packet); switch (topic) { case 'test': console.log('message-publish', packet.payload.toString()); 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源码
1 2 3 4 5 6 7 8 9
| var mqtt = require('mqtt'); var client2 = mqtt.connect("mqtt://127.0.0.1:1883"); client2.subscribe('test',{qos:1}); client2.on('message',function(top,message) { console.log(message.toString()); });
|
node subclient.js
开启订阅
开启发布
pubclient.js源码
1 2 3 4 5 6 7 8 9
| var mqtt = require('mqtt'); var client = mqtt.connect('mqtt://127.0.0.1');
var num = 0; var qtt = {}; qtt = 'helloworld'; setInterval(function() { 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服务器得知与订阅方相匹配的订阅时,会把这个主题消息的内容发给订阅方。