更新时间:2023年06月27日15时04分 来源:传智教育 浏览次数:
MQTT 是基于 发布(Publish)/订阅(Subscribe) 模式来进行通信及数据交换的,与 HTTP 的 请求(Request)/应答(Response) 的模式有本质的不同。
订阅者(Subscriber) 会向 消息服务器(Broker) 订阅一个 主题(Topic) 。成功订阅后,消息服务器会将该主题下的消息转发给所有的订阅者。
主题(Topic)以 ‘/’ 为分隔符区分不同的层级。包含通配符 ‘+’ 或 ‘#’ 的主题又称为 主题过滤器(Topic Filters); 不含通配符的称为 主题名(Topic Names) 例如:
chat/room/1 sensor/10/temperature sensor/+/temperature $SYS/broker/metrics/packets/received $SYS/broker/metrics/#
'+': 表示通配一个层级,例如a/+,匹配a/x, a/y '#': 表示通配多个层级,例如a/#,匹配a/x, a/b/c/d 注: ‘+’ 通配一个层级,’#’ 通配多个层级(必须在末尾)。
发布者(Publisher) 只能向 ‘主题名’ 发布消息,订阅者(Subscriber) 则可以通过订阅 ‘主题过滤器’ 来通配多个主 题名称。
会话(Session)
每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。