Xmpp Google Talk如何跨设备复制消息?

Xmpp Google Talk如何跨设备复制消息?,xmpp,google-talk,Xmpp,Google Talk,我想知道(官方)GTalk客户端是如何显示所有收到的消息的,即使它最初是由另一个客户端使用的。例如:我在我的笔记本电脑上登录了gmail.com上的GTalk,同时通过Android设备上的官方GTalk应用程序登录。一个朋友给我发了一条消息,显示在gmail.com客户端和Android客户端上。(我认为它最初只转发给其中一个客户端,但第二个客户端稍后会获取消息) 我最近发现有一个非常相似的XMPP特性,叫做。然而,在一个快速服务发现请求之后,谷歌的服务器没有宣传这一功能。XEP-0313和X

我想知道(官方)GTalk客户端是如何显示所有收到的消息的,即使它最初是由另一个客户端使用的。例如:我在我的笔记本电脑上登录了gmail.com上的GTalk,同时通过Android设备上的官方GTalk应用程序登录。一个朋友给我发了一条消息,显示在gmail.com客户端和Android客户端上。(我认为它最初只转发给其中一个客户端,但第二个客户端稍后会获取消息)

我最近发现有一个非常相似的XMPP特性,叫做。然而,在一个快速服务发现请求之后,谷歌的服务器没有宣传这一功能。XEP-0313和XEP-0136看起来也不错,但服务器也不宣传它们


可能相关的问题:

当你开始新的聊天时,你应该向用户发送第一条消息。这是大多数客户正在做的事情。当GTalk服务器将聊天消息检索到裸Jid时,它将消息路由到所有可用资源。对于此对话中的所有后续消息,客户端通常会获取资源并将其发送到完整JID。此时不应复制这些消息

许多其他服务器不会将消息路由到所有资源的裸JID,而是路由到最可用的资源,即具有最高优先级的客户机

以下是RFC的报价表:

If there is more than one resource with a non-negative presence priority then the
server MUST either
(a) deliver the message to the "most available" resource or
resources (according to the server's implementation-specific algorithm, e.g., treating
the resource or resources with the highest presence priority as "most available") or
(b) deliver the message to all of the non-negative resources. 

XEP-0280定义了这一点。据我所知,它定义了一种机制,当一个用户向任何人发送消息时,通知来自同一用户的所有资源。我的意思是,Alice/pda向Bob发送消息,因此Alice/mobile和Alice/PC将收到Alice/pda发送的消息的副本

希望能有帮助。我目前正在寻找一个实现此功能的服务器,以及一个客户端库。如果没有,我将自己在jabberd2和GlooxXMPP库中实现它


干杯,

谢谢Alex!我会尝试一下,看看我是否能重现官方客户的行为。我想这不是汤姆塔斯基所期望的答案。我将在下面回答,很幸运,我无法使用谷歌的服务器让它工作。。。无论如何,谢谢你的回答!最后我自己解决了这个问题。。。我刚刚在消息标记中创建了一个新标记,称为replica:。。。。。。。。。。我将此消息发送给我自己,我的所有资源都将作为消息从我自己那里接收它们。我知道这很棘手,但这是我目前唯一能做的事情,因为XEP-0280并没有在大多数服务器实现和客户端库中实现。这适用于所有XMPP服务器?甚至使用谷歌的服务器?