Mqtt订阅
2019-05-27 19:24:41 1 举报
Mqtt订阅时序图
作者其他创作
大纲/内容
可变报头
0010(4位)
协议剩余长度(8位~32位)
主题消息管理器
报文标识符MSB(8位)
协议组装(response)
返回剩余订阅数量
固定报头
主题过滤器
取消订阅
鉴权处理器
payload
返回实例对象(Topic)
返回存储主题
报文标识符LSB(8位)
字节流第一次解析(bytebuffer)
第二次解析(bytebuffer)
返回取消订阅请求响应
主题实例对象
请求类型(4位)
取消订阅确认
...............
返回请求类型(requestType)
获取到存在的连接管理器(channelManager)
实线表示确定路径括号()内为参数
CONN报文这个值等于9
获取主题实例对象,不存在则创建(topic)
通过主题管理器获取主题实例对象(topic)
这个值等于8
主题管理器
返回bytebuffer消息体
消息处理(requestType、payload)
鉴权结果(boolean)
主题过滤器长度(16位)
返回username、clientId(username、clientId)
删除订阅客户端信息(topic、clientId)
第一次解析出前四位的请求类型
协议处理器
获取主题实例对象(topic)
第二次解析出payload(消息主体)
过滤主题(topic)
虚线表示不确定路径括号()内为参数
SUBACK返回码
返回数量小于等于0移除主题实例对象
取消订阅请求
消息接收器
通过requestType找到对应的处理器(payload)
返回订阅请求响应
消息处理器
订阅处理器
固定格式
取消订阅请求(bytebuffer)
主题过滤器长度
订阅请求(bytebuffer)
qos
根据requestType、错误码、返回消息体进行协议组装
获取username、clientId
主题过滤(topic)
这个值等于10
返回payload
从连接管理池尝试获取连接管理器(clientId)
这个值等于11
删除订阅者的消息(topic、clientId)
协议剩余长度(16位)
订阅请求
鉴定连接权限(clientId、username、password、topic)
订阅返回
连接管理器
订阅客户端
连接管理器池
取消订阅处理器
将订阅信息存储到主题实例对象(topic、clientId、qos)
0 条评论
下一页