MQTT
概述
MQTT协议是一种基于TCP/IP协议的轻量级实时通讯协议,采用发布订阅模式,与Http相比能够主动推送信息给客户端,与WebSocket相比也更加轻量级,往往用于物联网。
MQTT在使用时主要有三部分 发布者,订阅者,代理服务器。订阅者连接代理服务器,订阅相关主题。发布者向代理服务器发送对应主题的内容,代理服务器会将其广播给所有订阅了该主题的发布者。
目前常用的开源MQTT代理服务器有Mosquitto、EMQTTD。阿里云,百度也有提供商用的IOT平台。
常用的MQTT客户端(发布者订阅组件)有Paho。
QoS
QoS是MQTT协议的收发数据的一种可靠性约定一共有三种
- QOS_LEVEL_EXACTLY_ONCE 订阅者能够准确接受到一数据
- QOS_LEVEL_AT_MOST_ONCE 订阅者会最多接受到一次数据
- QOS_LEVEL_AT_LEAST_ONCE 订阅者最少会接受到一次数据
应用场景
实习遇到一个需求,需要将机器人传感器上的数据实时推送给多个移动监控设备。查阅资料采用MQTT协议的物联网服务器往往可以承担这个功能。
配置mosquitto服务器
首先需要一个云服务器,我这里用的是阿里云轻量级应用服务器,装的Centos7。在服务器安装Mosquitto,并且启动Mosquitto服务的步骤如下:
下载mosquitto软件包
yum install mosquitto
通过如下命令查看是否已经安装完成
yum list installed | grep mosquitto
安装完成后通过如下命令启动mosquitto主程序
mosquitto -v
启动后显示如下
发布者
这里使用Paho提供的C# api来给出一个Demo
using System;
using uPLibrary.Networking.M2Mqtt;
using System.Net;
using System.Net.Sockets;
using System.Security.Cryptography.X509Certificates;
using System.Buffers;
usi