如何确定MQTT客户端的用户ID?
目前,我有一个MQTT系统,其中一个客户端发布,另一个客户端订阅。现在我想要一个多客户端发布的系统。用户必须了解哪个客户端正在发送信息 一种显而易见的方法是在发布消息中简单地附加一个客户机ID,我想知道是否有一种方法可以获取客户机ID,而无需显式地将其添加到消息中如何确定MQTT客户端的用户ID?,mqtt,Mqtt,目前,我有一个MQTT系统,其中一个客户端发布,另一个客户端订阅。现在我想要一个多客户端发布的系统。用户必须了解哪个客户端正在发送信息 一种显而易见的方法是在发布消息中简单地附加一个客户机ID,我想知道是否有一种方法可以获取客户机ID,而无需显式地将其添加到消息中 为了详细说明,假设主题是“/hello/world”,客户端1发布“OK”,客户端2发布“ERR”。有没有办法确定哪个客户端发送了什么消息?我相信,如果不查看日志,您无法判断是谁发送了消息 我过去克服这一问题的方法是在主题中发布带有客
为了详细说明,假设主题是“/hello/world”,客户端1发布“OK”,客户端2发布“ERR”。有没有办法确定哪个客户端发送了什么消息?我相信,如果不查看日志,您无法判断是谁发送了消息 我过去克服这一问题的方法是在主题中发布带有客户机id的消息;(客户id可以位于主题中的任何位置)
/hello/client1/world ok
/你好/客户2/世界错误
/你好/客户端3/世界警告
然后订阅这样的主题;
/你好/+/world
然后在代码中转换主题名称以获取消息和客户端id
例如,我使用的另一种方法是在有效负载中使用json
/hello/world{“msg”:“err”,“client”:“clientid1”}
如果不在主题中或消息正文中输入客户端的名称,则无法执行此操作。这是一个简单的发布和订阅系统,其原则是发布者和订阅者不需要相互了解-事实上,发布者不应该假设存在任何订阅者,这是完全可能的情况
因此,如果确实需要这样做,则需要以某种方式将客户机id放在主题名称中,或者将其包含在已发布消息数据的主体中