在 android smack 4.1 中接收到重复的消息

Nid*_*esh 4 client android chat xmpp smack

我一直在尝试使用 smack 4.1 创建一个 android 聊天应用程序。消息发送和接收工作正常,但问题是在 mXmppConnection.addAsyncStanzaListener 中多次收到相同的消息。我不知道我是否错过了向连接添加某些内容。

这是我的连接类:

XMPPTCPConnectionConfiguration.Builder configBuilder = new XMPPTCPConnectionConfiguration.builder();

 configBuilder.setUsernameAndPassword(mUser, "password@123");
configBuilder.setPort(5555);
configBuilder.setServiceName("tvm.myname.com");
configBuilder.setDebuggerEnabled(true);                    configBuilder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
try 
{
XMPPTCPConnection mConnection = new XMPPTCPConnection(configBuilder.build());
mConnection.connect();
mConnection.login();
} 
catch (SmackException e) 
{
} 
Run Code Online (Sandbox Code Playgroud)

这是消息接收的代码:

mXmppConnection.addAsyncStanzaListener(new StanzaListener() {
 @Override
 public void processPacket(Stanza packet) throws SmackException.NotConnectedException {
 Message message = (Message)packet;  
  Log.i("XMPPClient", "****** message " + message);
  // code for handling message
}                  `enter code here`
},null);
Run Code Online (Sandbox Code Playgroud)

真正的问题是我多次收到消息......消息的值在日志中打印了几次。请帮我....

Nid*_*esh 6

终于有了解决方案

问题不在于客户端,而在于粗心的编码。我一直将连接对象的单个实例分配给一个类变量,并且监听器每次都添加到这些引用对象中。所以这会导致多次调用侦听器......修复是通过将侦听器添加到单例连接对象来完成的。