Xmpp 发送给JID的消息仅在一个连接的设备上接收,可能有多个设备

Xmpp 发送给JID的消息仅在一个连接的设备上接收,可能有多个设备,xmpp,Xmpp,如果向发送消息,则同一用户登录三个设备(用户名“A”) 此用户(用户名“A”)仅来自另一个用户(用户名:“B”) 设备正在接收其他两个设备未接收的消息 请为我提供一个解决方案。用户a的客户端和用户a的服务器应该实现,这正是这样做的:它确保每个连接的客户端都收到所有接收和发送的消息。如果消息被发送到完整的JID(即user@domain/资源)无法使其他设备成为同一用户(但使用不同的资源)来接收相同的消息。这只有在实现了aka“消息碳”的情况下才可能(这是xnyhps建议的) 如果消息被发送到裸J

如果向发送消息,则同一用户登录三个设备(用户名“A”) 此用户(用户名“A”)仅来自另一个用户(用户名:“B”) 设备正在接收其他两个设备未接收的消息


请为我提供一个解决方案。

用户a的客户端和用户a的服务器应该实现,这正是这样做的:它确保每个连接的客户端都收到所有接收和发送的消息。

如果消息被发送到完整的JID(即
user@domain/资源
)无法使其他设备成为同一用户(但使用不同的资源)来接收相同的消息。这只有在实现了aka“消息碳”的情况下才可能(这是xnyhps建议的)

如果消息被发送到裸JID(即
user@domain
),它通常基于状态优先级发送(例如,Ejabberd是这样),如果所有设备具有相同的状态优先级,则消息将发送到所有设备。您的服务器不可能是这样,只说明如何向“最可用”的设备发送消息资源,所以一切都取决于实现:

根据服务器的实现特定算法将消息传递给“最可用”的一个或多个资源,例如,将具有最高存在优先级的一个或多个资源视为“最可用”(M)

如果您开发了自定义客户端,并且不打算在聊天系统中使用任何第三方客户端,则可以不使用carbons,只使用消息传递的默认服务器选项。至少是第一次