私はこの問題と 3 日以上「格闘」しており、関連するすべてのことをググってみました。
そこで、基本的なチャット アプリケーションを作成するために、Strophe と Ejabberd をセットアップしたいと思います。私が直面している問題は、Strophe を使用して XMPP サーバーに接続しようとするたびに、ステータスが CONNECTING のままになることです。Apache/Nginx プロキシを使用すると、502 プロキシ エラーが発生します。
upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "POST /http-bind HTTP/1.1", upstream: "http://127.0.0.1:5280/http-bind"
flXHR を使用して http-bind への直接接続を使用している場合、ブラウザーでは何も起こりません。CONECTING状態のままです。
この問題に直面しているマシンには、Fedora 12 と Ejabberd 2.1.4 があります。
ejabberd.log には次のようなものがあります。
=INFO REPORT==== 2010-07-15 14:41:55 ===
D(<0.831.0>:ejabberd_http_bind:1105) : --- incoming data ---
<body rid='2423401616' xmlns='http://jabber.org/protocol/httpbind' to='localhost' xml:lang='en' wait='60' hold='1' content='text/xml; charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>
--- END ---
=INFO REPORT==== 2010-07-15 14:41:55 ===
D(<0.831.0>:ejabberd_http_bind:117) : Starting session
=INFO REPORT==== 2010-07-15 14:41:55 ===
D(<0.832.0>:ejabberd_http_bind:294) : started: {"2e62ed526291d8b55024cbaa9698164715e70026",
[],
{{127,0,0,1},45679}}
=INFO REPORT==== 2010-07-15 14:41:55 ===
I(<0.833.0>:ejabberd_net:25) : gethostname {socket_state,ejabberd_http_bind,
{http_bind,<0.832.0>,
{{127,0,0,1},45679}},
ejabberd_http_bind}
=INFO REPORT==== 2010-07-15 14:41:58 ===
D(<0.369.0>:ejabberd_receiver:320) : Received XML on stream = " "
=INFO REPORT==== 2010-07-15 14:42:00 ===
D(<0.832.0>:ejabberd_http_bind:531) : terminate: Deleting session 2e62ed526291d8b55024cbaa9698164715e70026
=INFO REPORT==== 2010-07-15 14:42:00 ===
D(<0.832.0>:ejabberd_http_bind:532) : terminate: _Reason normal
=INFO REPORT==== 2010-07-15 14:42:00 ===
D(<0.831.0>:ejabberd_http_bind:237) : got pid: <0.832.0>
=INFO REPORT==== 2010-07-15 14:42:00 ===
D(<0.831.0>:ejabberd_http_bind:267) : Create session: "2e62ed526291d8b55024cbaa9698164715e70026"
=INFO REPORT==== 2010-07-15 14:42:00 ===
D(<0.831.0>:ejabberd_http_bind:789) : Looking for session: "2e62ed526291d8b55024cbaa9698164715e70026"
実際、Ubuntu 10.4 では同じ設定 (同じ javascript/html と同じ ejabberd.cfg) で問題はありません。動作中のセットアップと動作していないセットアップの間に 2 つの違いがあることがわかりました。まず、Ubuntu マシンでは 2.1.2-2 を ejabberd しましたが、問題のある Fedora マシンでは 2.1.3 (試して 2.1.4) でした。次に、動作するマシンのログに「gethostname」と「terminate: Deleting session」がありません。したがって、問題は「セッションの削除」にあり、「gethostname」に関連していると思いますが、この問題を解決するのに十分な経験がありません。
これをさらにデバッグする方法についてのヘルプや手掛かりをいただければ幸いです。前もって感謝します。