零基础教你自建 MQTT 服务器并实现双向通讯 [ 技术分享 ]
概述
随着物联网技术的快速发展,MQTT(Message Queuing Telemetry Transport)消息队列遥测传输协议,作为一种轻量级的通讯协议,被广泛应用于物联网设备之间的通讯。
MQTT 是一种基于发布/订阅(publish/subscribe)
模式的轻量级通讯协议,该协议构建于TCP/IP
协议上。MQTT
最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。
本次教程中,将探讨如何基于EMQX平台自建MQTT服务器,并实现设备之间的高效通讯。无论是在工业控制、智能家居还是智能城市等领域,搭建自己的MQTT服务器都能为我们带来更大的灵活性和可扩展性。让我们一起深入了解这个过程,为物联网应用打下坚实的基础。
MQTT通信的架构
上面架构图来自EMQX官网,其中中间绿色部分即我们要搭建的MQTT Broker
,MQTT
服务器搭建完成后,我们可以通过各种编程语言类库对服务器发起连接请求,以及主题发布和订阅。而编程语言类库中我们就可以使用workerman的mqtt扩展库与服务器进行通信。
MQTT概念
- Publisher(发布者):消息的发出者,负责发送消息。
- Subscriber(订阅者):消息的订阅者,负责接收并处理消息。
- Broker(代理):消息代理,位于消息发布者和订阅者之间,各类支持MQTT协议的消息中间件都可以充当。
- Topic(主题):可以理解为消息队列中的路由,订阅者订阅了主题之后,就可以收到发送到该主题的消息。
- Payload(负载);可以理解为发送消息的内容。
- QoS(消息质量):全称
Quality of Service
,即消息的发送质量,主要有QoS 0
、QoS 1
、QoS 2
三个等级,下面分别介绍下:- QoS 0(Almost Once):至多一次,只发送一次,会发生消息丢失或重复;
- QoS 1(Atleast Once):至少一次,确保消息到达,但消息重复可能会发生;
- QoS 2(Exactly Once):只有一次,确保消息只到达一次。
EMQX
EMQX平台作为一款开源的MQTT消息服务器,提供了稳定可靠的消息传输服务。本次教程中,我们将探讨如何基于EMQX平台自建MQTT服务器,并实现设备之间的高效通讯。无论是在工业控制、智能家居还是智能城市等领域,搭建自己的MQTT服务器都能为我们带来更大的灵活性和可扩展性。
EMQX 官网:https://www.emqx.io
安装 MQTTX 服务端
本次教程中,我们将使用 Docker 部署,使用 Docker 指令直接部署,可以使用以下命令
获取 Docker 镜像
docker pull emqx/emqx
启动 Docker 容器
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest
访问仪表板
安装完成后,打开浏览器,并在地址栏中输入 http://localhost:18083
以访问 EMQX
仪表板,您可以从那里连接到客户端或检查运行状态。
默认用户名: admin
默认密码:public
进入 EMQX 管理页面
安装 MQTTX 客户端
MQTTX 客户端我们选用workerman
的mqtt
扩展库与服务器进行通信。workerman/mqtt
是一个基于workerman的异步mqtt 客户端库,可用于接收或者发送mqtt协议的消息。支持QoS 0
、QoS 1
、QoS 2
。支持MQTT
、3.1
、3.1.1
、5
版本。
安装
composer require workerman/mqtt
版权声明 作者:Tinywan 原文:https://mp.weixin.qq.com/s/uoGou8mdWLcDS20JRbiHzg 本文版权归作者和workerman官方共有。欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 欢迎关注
开源技术小栈
微信公众号,一起进步!扫描下方二维码即可
共 0 条回复
Tinywan 浙江、杭州
最后登录:2024-12-11
在线时长:55小时47分
- 粉丝15
- 金钱11180
- 威望10
- 积分11830