2012-02-15 6 views
5

私は新しいユーザーを抱えていますが、私はSuMackライブラリ3.2.1のMultiUserChatに問題があります。私は "gtalk.google.com"サーバを使用しています。それは簡単な例だと部屋にI'amのみ1:XMPP aSmack MultiUserChatサーバーは既に受信済みのメッセージを送信し続けます

String room="[email protected]"; 
MultiUserChat muc = new MultiUserChat(connection,room); 
muc.join(userNameInRoom); 

muc.addMessageListener(new PacketListener() 
{ 
    @Override 
    public void processPacket(Packet packet) 
    { 
     ... 
    } 
}); 

後:ログイン

muc.sendMessage("Text message"); 

DEBUG/SMACK(281): 06:46:29 PM SENT (1140866576): <message id="gsMe7-18" 
to="[email protected]" type="groupchat"><body>Text message 
</body></message> 

DEBUG/SMACK(281): 06:46:29 PM RCV (1140866576): <message 
from="[email protected]/userNameInRoom" to="userName" 
type="groupchat"><body>Text message</body></message> 

結果: "テキストメッセージ" と、それは権利です、しかし、その後:

私は再び存在感を「テキストメッセージ」を受け取りました

DEBUG/SMACK(281): 06:54:12 PM RCV (1140866576): <presence 
from="[email protected]/userNameInRoom" to="userName"><x xmlns= 
"vcard-temp:x:update"><photo/></x><x xmlns="http://jabber.org/protocol/muc#user"> 
<item affiliation="owner" role="moderator"/><status code="110"/></x></presence> 

DEBUG/SMACK(281): 06:54:12 PM RCV (1140866576): <message 
from="[email protected]/userNameInRoom" to="userName" 
type="groupchat"><body>Text message</body><delay stamp="2012-02-15T17:46:31Z" 
from="[email protected]" xmlns="urn:xmpp:delay"/><x 
stamp="20120215T17:46:31" from="[email protected]" 
xmlns="jabber:x:delay"/></message> 

そして、サーバーが私にプレゼンスを送信するたびに、私は何度もそれを受け取りました。無限に5分間隔で続きます。はい、30分後に〜6のメッセージ "テキストメッセージ"を受信しました。 1つ以上のメッセージを送信すると、プレゼンスが私に送信されたときに、これらのメッセージはすべて例外なく受信されます。

私のMultiUserChatにはどのような問題がありますか?

ご注意いただきありがとうございます。

+0

に入るとチャット歴史の特定の番号を送信するためには、私が追加することができ、すべてがその[ステータスですコード101](http://xmpp.org/registrar/mucstatus.html)は、「MUC /ユーザーの組み合わせに対する所属変更」を意味します。 – Flow

+0

フロー、コメントありがとうございます。しかし、ステータスコード110は101ではありません。ステータスコード110はプレゼンス送信を意味し、それは真です。 – nizhney

+1

IIRC、これはgoogle talkのいくつかの奇妙な振る舞いで、間隔を置いてあなたの存在を再放送します。 – Zash

答えて

3

"@ conference.jabber.org"の場合は解決策が見つかりませんでしたが、GTalkサーバーとこの問題を「@ groupchat.google.com」の場合の正しいバージョンのMultiUserChatで判断しました。

room=roomName+"@conference.jabber.org"; 
MultiUserChat muc = new MultiUserChat(connection, room); 

muc.create(userName); 

muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT)); 

へ:

私はから私のコードを変更し

room="private-chat-" + UUID.randomUUID().toString() + "@groupchat.google.com"; 
MultiUserChat muc = new MultiUserChat(connection, room); 

muc.join(userName); 

muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT)); 

、私はそれを試してみましたが、ユーザーは、両方のクライアントがでクラッシュメッセージを招待し、それを受け入れる受け取るとき、私は新しいproblem-を得ましたXmlPullException "END_TAG expected"とlogcatの最後の位置に "</stream:stream>"のようなものがあります。

私はこの問題にGoogleを始めて、理由を見つけました。私はasmackをクライアントからasmackを使用しました(それ以前は、asmack開発者からasmack-7を使用していました)、それがsmack 3.1に基づいていることをどのように知っていましたか...私はsmack 3.2.0がこの問題を決定したことを発見しました。私はasmackのFlow's versionをダウンロードしました。私はこれに満足しています。

結論私は「ありがとう!!!」と言いたいと思います。 aSmackの正しいバージョンのためにフローする。これは他のものよりも優れている。

+0

私は助けてくれると嬉しいです。最新の状態にしておきたい、[元の回答](http://stackoverflow.com/a/5487854/194894)をupvoteすることを忘れないでください。 – Flow

1

ためにあなたのクライアントにされず、エラーがないthatsの、あなたのサーバーのグループチャットの履歴の設定を設定しなかったためザッツ注目ルーム

+0

あなたは問題の解決方法の詳細を教えてください。 – Moes

+0

あなたはOpenFire Serverを使用していますか? – dasdas

関連する問題