我在google上搜索过这个,但显然没有人尝试过这个或者不是最好的做法。
我获得了MQTT客户端对象并且能够进行通信,当我想保存他们的聊天并与客户保持联系时出现问题,以便当他们中的任何一个联机或脱机时,另一个可以获得通知。
一个Psuedo代码或只是指导这种方法的流程就足够了,因为我无法想象所提到的流程的流程。
请指导我一个教程,或者只是帮助我理解这里的事情。
这是我准备作为研究MQTT系统的一部分的演示。
答案 0 :(得分:1)
您正在寻找的是使用MQTT可以实现的,但您需要使用两个功能。
首先,您必须确保您的客户端使用非干净会话进行连接(并确保它们始终使用相同的客户端名称进行连接,这些客户端名称必须是唯一的)。这将确保客户端的状态保存在MQTT代理上;换句话说,只需在客户第一次连接时添加订阅。
其次,您需要使用QoS 1订阅和QoS 1发布。以QoS 1发布将保证MQTT代理已成功接收消息并将其传递到所有目的地。 QoS 1订阅将保证消息将被发送到客户端,无论其在发布时是否在线(假设它已经请求非干净会话,如果它当前处于脱机状态)。
此外,我建议使用QoS 0来发送客户端“在线”时的通知(但所有其他“聊天”消息可以并且应该在QoS 1发送/接收)。