环境
- EMQX 版本:5.0
- 操作系统版本:linux
重现此问题的步骤
- 请教解决方案,在实现1对1通讯时,客户端创建唯一主题 服务端去订阅,是不是大概思路就是客户端订阅服务端的上线主题,先向上线主题发送,服务端收到消息,再去订阅客户端主题。还是有其它方案?
MQTT 协议本身是一个一对多的 PUB/SUB 模型
服务端只是一个中间人 (broker)
所以没有 “服务端进行订阅” 这种概念。
如果你是想实现客户端之间的一对一通信,可以在应用层通过对客户端的 pub/sub 主题进行设计来完成。
例如使用 “主题前缀” 来实现。
例如现在有两个客户端,它们的 clientid 分别是 A: client_a
和 B: client_b
A 上线时订阅 p2p/client_a
,B 上线时订阅 p2p/client_b
例如每个客户端向主题 p2p/{target_client_id}
发送消息即可向指定的客户端发送端到端消息。