问题已发布,Mqtt How a client can get to know that another client is connected or not 和How to Find Connected MQTT Client Details
在我的情况下,如果客户端X已经在通道A中订阅,则客户端Y不能订阅通道A,直到X取消订阅。我只能在频道中订阅一个客户
我还可以使用保留消息和LWT的想法吗?
如果是,我不确切地知道从哪里开始。最好从一个简单的例子开始,看看保留的消息和LWT是如何工作的。到目前为止,我只是在发布和订阅方面有经验,但没有更多。
请问,请告诉我一些建议可能是一些链接或示例或任何有用的信息,所以我可以有一个起点。
答案 0 :(得分:2)
MQTT就是让多个客户订阅相同的主题,它是整个发布/订阅模式和共享信息的一部分。因此,协议中没有任何内容可以满足您的需求。
您可以实现以下内容:
如果有一个主题说initialState.setIn(["posts", "most_popular"], ["array", "of", "values"]);
并且您只想要一个订阅者,则可以将订阅者的客户端ID的有效负载发布到foo/bar
的保留消息。然后你可以发布一个" free"断开连接并设置LWT以便在客户端死亡的情况下执行相同的锁定主题。
这个问题是一切都是异步的,所以它为竞争条件打开了很多时间窗口。例如说lock/foo/bar
和client-1
都想订阅client-2
,他们都需要先订阅foo/bar
来检查其状态。他们都在几乎同时这样做,然后他们必须等待一段时间才能看到他们收到的消息("免费"或客户端ID)。他们都会免费获得#34;所以他们都会假设他们可以发布他们的客户ID。 lock/foo/bar
首先发布client-1
,然后他们都订阅了client-2
。