赞
踩
MQTT是物联网中应用及其广泛的应用协议,mqtt由于其带宽低和基于发布订阅的模式的优点,被各物联网平台推广使用。MQTT首先有三个角色:订阅者、发布者、中间代理。订阅者通过订阅指定消息类型可收到发布者发布的制定类型消息。服务器作为代理做消息的转发。这种基于发布订阅的模式与物联网中边缘终端1对N的特征完全匹配。不得不说MQTT协议天生为物联网而生。
本文将分两部分总结下搭建基于MQTT协议的服务端和客户端。
MQTT作为一种协议被各厂家实现了各种版本,mqtt的官网https://mqtt.org也提供了各个源码的链接。
这里使用emqx作为服务器,emqx为用户提供了后台管理界面,程序运行后可直接通过web查看或更改服务。emqx官网有介绍各种平台的不同安装方式,这里建议使用官网提供的一键安装脚本
curl https://repos.emqx.io/install_emqx.sh | bash
安装完成后可直接通过emqx start运行服务,服务打开后可通过web访问后台的方式查看各种信息。默认端口是18083。如果是云服务器记得开放该端口访问权限。
默认是英文显示,可以自行在设置中更改语言和显示主题。同时由于emqx还提供websocket方式订阅发布消息。后台Dashboard也提供了通过websocket方式建立连接、发布、订阅的功能,方便用户可以直接测试功能效果。
参考mqtt官网提供的几个版本的客户端源码,最终使用了libemqtt版本。直接从github下载代码之后make即可生成发布和订阅两个demo,这里以订阅为例运行sub后,demo死循环打印接收到的订阅的消息
通过web发送客户端订阅的主题消息,消息内容为hello, World。这里需要理解下,虽然是通过服务端的后台发送的消息,但web通过websocket建立连接后,此时的web也是客户端之一。
客户端接收到消息,并打印出来
libemqtt的demo中只是用到了基本的功能,库中的多个接口还需要日后有时间慢慢研究下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。