跳转到主要内容

nodejs快速搭建MQTT服务器

Plant Amber Pendant Long Necklace Clothing Jewelry

简介

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件。

MQTT架构原理图

现在各种资料上查到是一大堆关于`mosca`这个库,但是这个库已经停止维护了,那还有没有别的库呢?答案是肯定的,那就是这篇文章要讲的`aedes`库。

`aedes`库是开发者与所有`Mosca`用户进行大量讨论以及如何在生产环境中部署后诞生的且两个库是同一个作者。这保证了改库的性能和稳定性。

那如何用nodejs搭建mqtt服务器呢?

一、建立一个文件夹,并在该文件夹内打开终端初始化项目

npm init -y

二、安装`aedes`

npm install aedes

三、新建index.js文件

const aedes = require('aedes')()
const server = require('net').createServer(aedes.handle)
const port = 1883

server.listen(port, function () {
  console.log('server started and listening on port ', port)
});

// 身份验证
aedes.authenticate = function (client, username, password, callback) {
    callback(null, (username === 'user' && password.toString() === '123456'));
}

// 客户端连接
aedes.on('client', function (client) {
    console.log('Client Connected: \x1b[33m' + (client ? client.id : client) + '\x1b[0m', 'to broker', aedes.id);
});

// 客户端断开
aedes.on('clientDisconnect', function (client) {
    console.log('Client Disconnected: \x1b[31m' + (client ? client.id : client) + '\x1b[0m', 'to broker', aedes.id);
});

四、运行文件

node index

到此简单的mqtt的服务端已经完成了。 

客户端连接

一、安装mqtt

npm install mqtt

二、新建一个订阅消息文件sub.js

const mqtt = require("mqtt");

const client  = mqtt.connect('mqtt://127.0.0.1:1883',{
        username: "user",
        password: '123456'
});

client.on("connect", function() {
  console.log("服务器连接成功");
  console.log(client.options.clientId);
  client.subscribe("text", { qos: 1 }); // 订阅text消息
});

client.on("message", function(top, message) {
  console.log("当前topic:", top);
  console.log(message.toString());
});

 三、运行文件

node sub

 发布客户端

新建发布消息文件pub.js

const mqtt = require("mqtt");

const client  = mqtt.connect('mqtt://127.0.0.1:1883',{
        username: "user",
        password: '123456'
});

client.on("connect", function() {
  console.log("服务器连接成功");
  console.log(client.options.clientId);
  client.publish("text", JSON.stringify({id: 1}), { qos: 0, retain: true }); // 发布主题text消息
});

运行文件

node pub

到此,mqtt服务端与客户端都好了。在根据各自的功能开发业务逻辑就行了。

关于`aedes`更多高级功能,请参照https://github.com/moscajs/aedes

代做工资流水公司新乡代做工资流水单重庆代办薪资流水单南昌查询消费贷流水佛山入职流水代办石家庄自存银行流水公司大庆车贷流水公司上海办薪资流水单扬州离职证明办理大庆查车贷银行流水武汉做购房银行流水临沂查对公账户流水南宁在职证明图片三亚工资流水app截图打印岳阳房贷工资流水 图片九江开个人工资流水威海工资流水单费用青岛工资代付流水查询哈尔滨查询房贷收入证明宁德收入证明代办常州企业银行流水成都工资流水单开具中山做自存银行流水上饶银行流水电子版模板成都企业贷流水代办广州对公流水价格重庆工资代付流水查询宁波开企业银行流水温州车贷流水图片新乡查询企业对公流水宁波办理购房银行流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化