5

私はスタックの新しいユーザーですが、Android用のSmackライブラリ3.2.1のMultiUserChatに問題があります。「gtalk.google.com」サーバーを使用しています。これは簡単な例で、私は部屋に1人しかいません。

 String room="myConference@conference.jabber.org";
 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="myConference@conference.jabber.org" type="groupchat"><body>Text message
</body></message>

DEBUG/SMACK(281): 06:46:29 PM RCV  (1140866576): <message
from="myConference@conference.jabber.org/userNameInRoom" to="userName"
type="groupchat"><body>Text message</body></message>

結果:「テキストメッセージ」とそれは正しいですが、その後:

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

DEBUG/SMACK(281): 06:54:12 PM RCV  (1140866576): <presence 
from="myConference@conference.jabber.org/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="myConference@conference.jabber.org/userNameInRoom" to="userName"
type="groupchat"><body>Text message</body><delay stamp="2012-02-15T17:46:31Z" 
from="myConference@conference.jabber.org" xmlns="urn:xmpp:delay"/><x 
stamp="20120215T17:46:31" from="myConference@conference.jabber.org" 
xmlns="jabber:x:delay"/></message>

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

MultiUserChatにどのような問題があり、ここで配信が遅れるのは何ですか?

ご清聴ありがとうございました!

4

2 に答える 2

3

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

コードを次のように変更しました:

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));

試してみましたが、新しい問題が発生しました。ユーザーが招待メッセージを受信して​​受け入れると、両方のクライアントがXmlPullException"END_TAGexpected"とlogcatの最後の位置にある"</stream:stream>"のようなものでクラッシュします。

私はこの問題をグーグルで検索し始め、理由を見つけました。私はビームクライアントからasmackを使用しました(ちなみに、以前はasmack開発者からasmack-7を使用していました)そしてそれがsmack3.1に基づいていることをどのように知っていますか...smack3.2.0がこの問題を決定したことがわかりました。Flowのバージョンのasmackをダウンロードしましたが、これに満足しています。

結論として、「ありがとう!!!」と言いたいです。他よりもうまく機能する正しいバージョンのaSmackのフローに。

于 2012-02-17T19:00:12.187 に答える
1

これはクライアントのせいではなく、エラーではありません。サーバーのGroupChatの履歴設定が、部屋に入るときに特定の数のチャット履歴を送信するように構成されているためです。

于 2014-07-17T23:59:23.647 に答える