根据规范,应始终由客户端建立与服务器的连接。
客户:
使用 MQTT 的程序或设备。客户端总是建立到服务器的网络连接。它可以
发布其他客户端可能感兴趣的应用消息。
订阅请求它有兴趣接收的应用程序消息。
取消订阅以删除对应用程序消息的请求。
断开与服务器的连接。
如果这个客户端订阅了一个应用程序消息,那么服务器应该将这些消息转发给这个特定的客户端。
服务器:
在发布应用程序消息的客户端和进行订阅的客户端之间充当中介的程序或设备。服务器
接受来自客户端的网络连接。
接受客户端发布的应用程序消息。
处理来自客户端的订阅和取消订阅请求。
转发与客户端订阅匹配的应用程序消息。
这是否意味着如果客户端订阅了,那么即使在大多数时间没有数据流,它也会在订阅有效期间保持与服务器的连接?
我得出这个结论是因为如果客户端在订阅后断开连接,那么服务器无法将消息转发给它,因为应该建立连接的是客户端。但它不知道何时重新建立它。