Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定MQTT客户端的用户ID?_Mqtt - Fatal编程技术网

如何确定MQTT客户端的用户ID?

如何确定MQTT客户端的用户ID?,mqtt,Mqtt,目前,我有一个MQTT系统,其中一个客户端发布,另一个客户端订阅。现在我想要一个多客户端发布的系统。用户必须了解哪个客户端正在发送信息 一种显而易见的方法是在发布消息中简单地附加一个客户机ID,我想知道是否有一种方法可以获取客户机ID,而无需显式地将其添加到消息中 为了详细说明,假设主题是“/hello/world”,客户端1发布“OK”,客户端2发布“ERR”。有没有办法确定哪个客户端发送了什么消息?我相信,如果不查看日志,您无法判断是谁发送了消息 我过去克服这一问题的方法是在主题中发布带有客

目前,我有一个MQTT系统,其中一个客户端发布,另一个客户端订阅。现在我想要一个多客户端发布的系统。用户必须了解哪个客户端正在发送信息

一种显而易见的方法是在发布消息中简单地附加一个客户机ID,我想知道是否有一种方法可以获取客户机ID,而无需显式地将其添加到消息中


为了详细说明,假设主题是“/hello/world”,客户端1发布“OK”,客户端2发布“ERR”。有没有办法确定哪个客户端发送了什么消息?

我相信,如果不查看日志,您无法判断是谁发送了消息

我过去克服这一问题的方法是在主题中发布带有客户机id的消息;(客户id可以位于主题中的任何位置)

/hello/client1/world ok
/你好/客户2/世界错误
/你好/客户端3/世界警告

然后订阅这样的主题;

/你好/+/world
然后在代码中转换主题名称以获取消息和客户端id

例如,我使用的另一种方法是在有效负载中使用json


/hello/world{“msg”:“err”,“client”:“clientid1”}

如果不在主题中或消息正文中输入客户端的名称,则无法执行此操作。这是一个简单的发布和订阅系统,其原则是发布者和订阅者不需要相互了解-事实上,发布者不应该假设存在任何订阅者,这是完全可能的情况

因此,如果确实需要这样做,则需要以某种方式将客户机id放在主题名称中,或者将其包含在已发布消息数据的主体中