We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布 / 订阅(publish/subscribe)模式的 "轻量级" 通讯协议。
在软件开发中,常使用 MQTT 协议进行消息广播,因为 MQTT 是一个协议,所以我们需要搭建一个支持 MQTT 协议的服务器,使服务端和客户端能够通过这个 MQTT 服务器(broker)进行消息转发、通信。
MQTT 单节点:192.168.244.84:1883
uname -r
sudo yum update
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce
sudo systemctl start docker sudo systemctl enable docker sudo systemctl stop docker
docker version
docker search mysql
systemctl status docker.service
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。官方有提供 Docker 版本,可以直接使用 docker pull 进行下载。
它是目前 MQTT 服务器中,最优秀的产品之一,其优点有:
下载命令:
docker pull emqx
启动容器
docker run --name=mqtt --net=host --restart=always -d emqx
启动后,登录 mqtt 管理页面:http://{ip}:18083,确认部署成功。 默认账号:admin 默认密码:public
接下来我们可以通过编写 client 端和 server 端的脚本,来模拟订阅和发布。
client 端测试脚本:
var mqtt = require('mqtt'); var client = mqtt.connect('mqtt://192.168.244.84:1883', { username: "admin", password: "public", clientId: 'client9' }); function getYYYYMMDDhhmmssByDate() { let date = new Date(); let value = date.getFullYear() * 10000000000 + (date.getMonth() + 1) * 100000000 + date.getDate() * 1000000 + date.getHours() * 10000 + date.getMinutes() * 100 + date.getSeconds(); return value; }; client.on('connect', function() { console.log("connect success"); client.subscribe('/server/task/roleId/1/update_task_data'); }); client.on('message', function(topic, message, packet) { console.log(" "); console.log("time: ", getYYYYMMDDhhmmssByDate()); var jsonStr = message.toString() console.log("jsonStr: " + jsonStr); console.log(" "); });
server 端脚本:
var mqtt = require('mqtt'); var client = mqtt.connect('mqtt://192.168.244.84:1883', { username: 'admin', password: 'public', clientId: 'server1' }); var jsonStr = JSON.stringify({ "event": "update_task_data", "data": { "arrTaskId": [], "arrTaskInst": [{ "id": 1, "roleId": 1, "moduleId": "0", "userId": 0, "taskId": 999, "finish": 0, "taskNodeId": 15, "taskNodeStatus": 0, "taskNodeStartTime": 20210811, "beforeNodeId": 14 }] } }); // 推送的频道和数据 //client.publish("/server/task/roleId/1/update_task_data", jsonStr, { qos: 2, retain: false });
运行结果:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
总述
文档介绍
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布 / 订阅(publish/subscribe)模式的 "轻量级" 通讯协议。
在软件开发中,常使用 MQTT 协议进行消息广播,因为 MQTT 是一个协议,所以我们需要搭建一个支持 MQTT 协议的服务器,使服务端和客户端能够通过这个 MQTT 服务器(broker)进行消息转发、通信。
部署架构概述
MQTT 单节点:192.168.244.84:1883
部署
安装 docker
查看内核版本(需要 CentOS7 或以上版本)
把 yum 包更新到最新
安装需要的软件包, yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的。
设置 yum 源
查看仓库中 docker 版本
安装 docker
命令测试:
启动 Docker、设置开机启动、停止 Docker
查看版本
使用一下确认是否启动成功, 使用 search 命令
查看日志状态成功日志
下载 MQTT 服务器 emqx
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。官方有提供 Docker 版本,可以直接使用 docker pull 进行下载。
它是目前 MQTT 服务器中,最优秀的产品之一,其优点有:
下载命令:
启动容器
启动后,登录 mqtt 管理页面:http://{ip}:18083,确认部署成功。
默认账号:admin
默认密码:public
接下来我们可以通过编写 client 端和 server 端的脚本,来模拟订阅和发布。
client 端测试脚本:
server 端脚本:
运行结果:
The text was updated successfully, but these errors were encountered: