1

BOSH 経由で XMPP サーバーに接続する必要がある J2ME クライアントを作成しています。私が使用しているサーバーは ejabberd です。

BOSH経由でサーバーに正常に接続する他の2つのアプリケーションがあります。1 つは flash (xiff ライブラリ) で、もう 1 つは javascript (strophe) です。

私の J2ME コードは、restart="true" 属性を持つ body タグを使用してストリームを再起動する必要があるところまで、すべてを管理しています。

ejabberd サーバーは、この時点でストリーム開始メッセージの返送に失敗しますが、代わりに internal-server-error を送信します。

私が持っている Java コードは、上記の 2 つのライブラリと同じメッセージを生成します。ejabberd コードで確認したところ、ストリーム再起動の BOSH メッセージとストリーム機能メッセージは、ストリーム再起動要求に応じて別々に送信されていますが、他の 2 つのライブラリからは同時に送信されています。

この種の行動を見た人はいますか?私は何が欠けていますか?

以下は、BOSH 会話の関連部分の短いログです。

[0][OUT] <body rid='1367396715' sid='fe67e7de6f99df688caa5b1977428f59a23bbb9b' xmlns='http://jabber.org/protocol/httpbind'><response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/></body>
[1][IN ] <body xmlns='http://jabber.org/protocol/httpbind'><success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/></body>
---SUCCESS!
Restarting stream
[1][OUT] <body rid='1367396716' sid='fe67e7de6f99df688caa5b1977428f59a23bbb9b' xmlns='http://jabber.org/protocol/httpbind' xml:lang='en' xmpp:restart='true' xmlns:xmpp='urn:xmpp:xbosh' to='test.wildeboom.com'/>
[0][IN ] <body xmlns='http://jabber.org/protocol/httpbind'/>
[1][IN ] <body type='terminate' condition='internal-server-error' xmlns='http://jabber.org/protocol/httpbind'/>

ejabberd ログ ファイルには、次のストリーム再開メッセージがあります。ストリーム機能が添付されていないことに注意してください。ストリーム機能メッセージは個別にキューに入れられますが、送信に失敗します。他のライブラリの場合、このメッセージにはストリーム機能要素が添付されています。

D(<0.741.0>:ejabberd_http_bind:927) : ===[BIND]prepare_response OutPacket: 
[{xmlstreamstart,
"stream:stream",
[{"version",
  "1.0"},
 {"xml:lang",
  "en"},
 {"xmlns",
  "jabber:client"},
 {"xmlns:stream",
  "http://etherx.jabber.org/streams"},
 {"id",
  "1974251422"},
 {"from",
  "test.wildeboom.com"}]}]
4

0 に答える 0