如果发送消息,则相同的用户登录三个设备(用户名" A") 此用户(用户名" A")来自其他用户(用户名:" B")只有一个 设备正在接收其他两个设备未接收的消息。
请给我一个解决方案。
答案 0 :(得分:2)
用户A的客户端和用户A的服务器应该实现XEP-0280,这正是这样做的:它确保每个连接的客户端都收到每个收到和发送的消息。
答案 1 :(得分:2)
如果消息被发送到完整的JID(即user@domain/resource
),则无法使同一用户的其他设备(但具有不同的资源)接收相同的消息。这可能只有在XEP-0280又名"消息碳信息"实施(这是 xnyhps 建议的那样)。
如果消息被发送到裸JID(即user@domain
),它通常根据存在优先级发送(如果Ejabberd是真的),如果所有设备都有消息将被发送到所有设备的相同存在优先级。对于您的服务器而言,情况可能并非如此,RFC 6121仅表示要向"最常用的"资源,所以一切都取决于实施:
将消息传递给"最常用的"根据服务器的特定于实现的算法的资源或资源,例如,将具有最高存在优先级的资源或资源视为"最可用的" (M)
如果您开发自定义客户端并且无法在聊天系统中使用任何第三方客户端,则可以不使用碳,只需坚持邮件传递的默认服务器选项即可。至少是第一次。