如何在两个用户之间同步XMPP聊天线程?

如何在两个用户之间同步XMPP聊天线程?,xmpp,smack,asmack,Xmpp,Smack,Asmack,我目前正在使用aSmack库为Android开发一个XMPP客户端 我想知道的一件事是,如果两个用户各自创建一个与另一个人的聊天,会发生什么? 例如,第一个客户端将执行以下操作: connection.getChatManager().createChat("testing2@testing.com", new MessageListener() { @Override public void processMessage(Chat arg

我目前正在使用aSmack库为Android开发一个XMPP客户端

我想知道的一件事是,如果两个用户各自创建一个与另一个人的聊天,会发生什么? 例如,第一个客户端将执行以下操作:

    connection.getChatManager().createChat("testing2@testing.com", new MessageListener() {
            @Override
            public void processMessage(Chat arg0, Message arg1) {
                                //.....
            }
        });
    connection.getChatManager().createChat("testing1@testing.com", new MessageListener() {
            @Override
            public void processMessage(Chat arg0, Message arg1) {
                                //.....
            }
        });
第二个客户端将执行以下操作:

    connection.getChatManager().createChat("testing2@testing.com", new MessageListener() {
            @Override
            public void processMessage(Chat arg0, Message arg1) {
                                //.....
            }
        });
    connection.getChatManager().createChat("testing1@testing.com", new MessageListener() {
            @Override
            public void processMessage(Chat arg0, Message arg1) {
                                //.....
            }
        });
服务器上是否会有两个聊天实例,因此消息侦听器不会拾取任何消息,因为它们来自不同的聊天

或者服务器会自动将聊天线程同步到一个线程中,这样消息侦听器就能正常工作并能够截获传入的消息

如果是第一种情况,那么有什么可能的解决方案来解决这个问题,从而将聊天合并为一个


编辑:我刚刚在一个快速的示例中尝试了它,这似乎是第一种情况,但我不确定这是否是因为我做了一些错误的事情。

XMPP服务器不知道您在示例中创建的两个聊天线程,因此无法同步它们。这是故意的。XMPP聊天只是一组具有相同线程id的消息节


我推荐阅读。

谢谢你推荐的阅读!它帮助我们解决了很多问题。然而,我仍然无法找到解决问题的正确方法。嗯,我确实有一个解决办法,但我想看看这样做是否正确。本质上,当用户重新启动应用程序时,如果他先发送一条消息(包括创建一个新的聊天),那么我就用我从聊天侦听器获得的聊天实例覆盖另一个客户端中的聊天实例。如果他先收到一条消息,那么我会用另一个用户的客户端仍然引用的聊天覆盖他自己新创建的聊天。这是一个合适的解决方案吗?另一个解决方案是使用id引用聊天记录,但我不确定它的可靠性或独特性。