2

Openfire サーバーに接続しようとすると、競合エラー (409) が発生します。

サーバーに確認したところ、サーバーポリシーは「同じ新しい着信接続がある場合は最後の接続をキックする」に設定されています

W/System.err(13238): conflict(409)
W/System.err(13238):    at org.jivesoftware.smack.SASLAuthentication.bindResourc
eAndEstablishSession(SASLAuthentication.java:458)
W/System.err(13238):    at org.jivesoftware.smack.SASLAuthentication.authenticat
e(SASLAuthentication.java:349)
W/System.err(13238):    at org.jivesoftware.smack.XMPPConnection.login(XMPPConne
ction.java:230)
W/System.err(13238):    at org.jivesoftware.smack.Connection.login(Connection.ja
va:353)

これをしようとすると:

ConnectionConfiguration xmppCc = new ConnectionConfiguration("some.domain");
xmppCc.setSendPresence(false);
XMPPConnection xmppConn = new XMPPConnection(xmppCc);
xmppConn.connect();
xmppConn.login(username, password);

最後の行を実行するときに例外がスローされます(ログイン)

アクティビティ onDestroy() でこれを行います

@Override
protected void onDestroy() {
    super.onDestroy();
    Presence presence = new Presence(Presence.Type.unavailable);
    xmppConn.sendPacket(presence);  
    xmppConn.disconnect();
}

どんな助けでも大歓迎です、ありがとう! :D

4

2 に答える 2

0

@GodWin xmpp は、他のユーザーが既に使用しているユーザー名でアカウントを作成すると、競合エラー (409) を介して発生します。ログイン時の Xmpp は、このタイプの例外を経由しません。したがって、アカウントを作成する場合は、サーバーに登録されていない新しい資格情報を使用してください。

于 2012-12-31T12:02:29.237 に答える
0

私はスマック内でコードを検索しません。サーバー (openfire のように聞こえます) が、あなたが設定したことをしていないようです: 最後のリソースをキックします。すでに接続されている fullJID (ベア ID + リソース) をバインドしようとする XMPP クライアントを使用して、このケースを検証することができます。

于 2012-04-17T12:20:46.787 に答える