简介

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 = 1883server.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

nodejs快速搭建MQTT服务器相关推荐

  1. 快速搭建MQTT服务器(MQTTnet和Apache Apollo)

    前言 MQTT协议是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分,http://mqtt.org/. MQTT is a machine-to-machine (M2M)/" ...

  2. 如何通过nodejs快速搭建一个服务器

    在前端开发过程中,可能某些时候需要自己搭建一台服务器用于一些文件图片请求或者进行后端相关知识的学习.本文主要讲解如何通过nodejs进行一个基础服务器的搭建,包括如何将文件布置的服务器,以及基础接口的 ...

  3. 转 【MQTT】在Windows下搭建MQTT服务器

    MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供 ...

  4. 【MQTT】在Windows下搭建MQTT服务器

    MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供 ...

  5. 【MQTT从入门到提高系列 | 01】从0到1快速搭建MQTT测试环境

    这是机器未来的第24篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125532208 1. mosquitto概述 Ecl ...

  6. 手把手搭建企业IT实战环境第三季:快速搭建SCCM1902服务器

    手把手搭建企业IT实战环境第三季:快速搭建SCCM1902服务器 ©Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者 博客:https://blog. ...

  7. MQTT在Windows下搭建MQTT服务器

    MQTT 在Windows下搭建MQTT服务器 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012163234/article/details/ ...

  8. linux如何搭建mqtt服务器,【MQTT】在Ubuntu下搭建MQTT服务器

    前言 博主之前写了一篇<在Windows下搭建MQTT服务器>,这次要尝试在Ubuntu下搭建MQTT服务器.实际上,下载好源码包后,后面的都和那篇文章差不多了. 开发环境 虚拟机 Ubu ...

  9. 【Android RTMP】NV21 图像旋转处理 ( 快速搭建 RTMP 服务器 Shell 脚本 | 创建 RTMP 服务器镜像 | 浏览器观看直播 | 前置 / 后置摄像头图像旋转效果展示 )

    文章目录 安卓直播推流专栏博客总结 一. 编写快速搭建 RTMP 服务器 Shell 脚本 二. RTMP 快速搭建方法 三.创建阿里云 RTMP 服务器镜像 四.浏览器查看直播内容 五.前置 / 后 ...

最新文章

  1. 【连载】优秀程序员的45个习惯之45——及时通报进展与问题
  2. vim 查找并手动替换(笔记)
  3. 明日科技的python书籍怎么样_零基础学习Python不可错过的5本书籍
  4. Java .Net Byte数组存储差异以及解决方法
  5. LeetCode 1059. 从始点到终点的所有路径(回溯)
  6. internet download manager补丁_NS《古树旋律》推出免费追加乐曲补丁 含五首新曲!...
  7. 带SN切换流程_贴片电阻生产工艺流程简介
  8. QT中双击mdiArea区域打开文件(监听双击事件)
  9. Day16_IO框架1(File类, IO流, 字节流字符流, IO异常, Properties)
  10. 假设检验2_t分布的应用
  11. 再度盈利,搜狐稳了?
  12. 一篇爽文带你全面了解mysql的索引
  13. 运算放大器的16个基础知识点
  14. nodejs在Linux下使用图片相关模块出现Error: write EPIPE
  15. (三)mmclassification图像分类——模型训练
  16. php查排名,PHP实现排名并查询指定用户排名
  17. 中南民族大学 计算机组成原理实验报告,计算机系统结构实验报告(中南民族大学)...
  18. Springboot 整合Retry 实现重试机制
  19. 光是无限远服务器怎么登陆,sv独立客户端怎么连接服务器(sv独立客户端登录密码)...
  20. 【Mysql】EVENT 使用基础 - Create Event

热门文章

  1. element-ui 日历组件calendar 添加日程
  2. SVN安装及简单使用教程
  3. 3.21 路径锚点的连接和平均 [Illustrator CC教程]
  4. 每周一喂丨勒索病毒无解?做好预防是关键!
  5. 《变形金刚2》多款巨幅海报
  6. 使用代理失败的解决方法
  7. 拒绝你访问计算机 无法删除,电脑删除文件或文件夹时出错无法删除访问如何解决?...
  8. 百度之星资格赛1001Energy Conversion
  9. MySQL模糊查询详解
  10. 336亿的生意——你所不了解的Dapp这一年(上)