mqtt 解决方案

环境

  • EMQX 版本:5.0
  • 操作系统版本:linux

重现此问题的步骤

  1. 请教解决方案,在实现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} 发送消息即可向指定的客户端发送端到端消息。

请问这个功能是不是可以实现投递订阅端过滤,只有企业版才支持吗?