2020-05-04 MQTT服务器和订阅发布客户端测试

MQTT服务端和客户端测试结果

1.服务端启动:


服务启动.jpg

2.订阅客户端启动:
订阅客户端发送请求步骤:
2.1首先向服务端发送连接请求
2.2服务端回复连接成功ack
2.3客户端收到连接成功ack,客户端发送心跳【PingReqMessage】
2.4服务回送心跳应答【PingRespMessage】
2.5客户端收到心跳应答后,订阅话题【mqttClient/topicTwo2、mqttClient/topicTwo3、mqttClient/topicTwo4】,三者Qos=1,目前没法设置成其他
2.6服务端回复订阅成功ack【SubAckMessage】
看订阅客户端启动日志:


image.png

看服务端日志:服务端对这三个订阅请求都回复了ack
image.png

3.发布客户端启动:
发布客户端发送请求步骤:
3.1首先向服务端发送连接请求
3.2服务端回复连接成功ack
3.3客户端收到连接成功ack,客户端发送心跳【PingReqMessage】
3.4服务回送心跳应答【PingRespMessage】
3.5客户端收到心跳应答后,发布话题如下;


image.png

发布客户端的日志:
image.png

数了一下,话题发布全部成功,这里mqttClient/topicTwo4话题发布了5次【为了验证多次发送同一个话题能否成功】
验证订阅客户端是否收到5个mqttClient/topicTwo4话题
image.png

上图结果显示正确,测试到这里就结束了。
4.服务端保持客户端的心跳:【55秒】
image.png

5.服务端保持客户端心跳机制:
5.1客户端与服务端连接成功后,服务端会建立一个该客户端延时任务,放入延时队列,延时时间为该客户的存活时间【ConnectMessage的KeepAlive参数】,放入延时队列每5秒取任务,如果有任务被获取,并且该任务没有被取消,服务端主动断开客户端连接。
5.2 服务端一旦接收到已经建立连接的客户端的数据,会把该客户端之前的心跳任务取消,重新提交一个延时任务。
本例子中客户端30s会发送一个Ping消息给服务端,所以客户端永远不会断开【除非异常】

以上是简单的例子,仅用于自己学习记录,其中还有很多问题和不完善的地方,不喜勿碰,非常感谢。
献上需要外部导入的jar包:
链接:https://pan.baidu.com/s/1GNaoruCvnG_egP69TEXCOA
提取码:mxfm

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。