1

XMPP over BOSH と Strophe をクライアント側で使用してリアルタイム通知システムを実装していますが、いくつか問題があります。Web サイトにログオンすると、バックエンドで BOSH 接続を確立し、JID、SID、および RID を Cookie として保存します。ページがリロードされると、Cookie からデータを取得し、Strophe のアタッチ機能を使用してそのセッションにアタッチします。接続されていることを示すコールバック ステータスが表示されます。

私が直面している最初の問題は、リクエストが毎秒ごとに送信されていることです。リクエスト ヘッダーは次のとおりです。

リクエストURL:http://localhost:7070/http-bind/
リクエスト方法:POST
ステータスコード:200 OK

Request Headers
Accept: */*
Accept-Charset:UTF-8,*;q=0.5
Accept-Encoding:gzip,deflate,sdch
Accept-Language:sv-SE,sv;q=0.8,en-US;q=0.6 ,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:77
Cookie:JSESSIONID=ibxwvm3ophp8; jiveforums.admin.logviewer="debug.size=0&info.size=0&warn.size=0&error.size=0"
ホスト:localhost:7070
オリジン:http:// * **
リファラー :http:// * ** /flXHR /flXHR.swf
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML、Gecko など) Chrome/13.0.782.107 Safari/535.1 content-type:application/x-www-form-urlencoded

フォームデータ
< bodyrid:'3007' xmlns

応答ヘッダー
Content-Length:57
Content-Type:text/xml;charset=UTF-8
サーバー:Jetty(7.0.2-SNAPSHOT)

応答コンテンツが表示されないため、何が原因なのかわかりません。送信されているフォーム データが無効で不完全な XML のように見えます。これが原因なのか、それとも Chrome がデバッガーでフォーマットする方法なのか?

私が直面している他の問題は、ページをリロードするときです。アンロード イベントをウィンドウ オブジェクトにバインドし、RID を 1 つ増やして Cookie に保存しました。ただし、ページをリロードすると、BOSH セッションにアタッチしたと表示されますが、次のエラー メッセージが表示されます。

POST http://localhost:7070/http-bind/ 404 (Not Found) (localhost)

Uncaught Error: 16, ioError, An error occured preventing completion of the request. (flensed.js)

次のリクエストでは、404 (Not Found) ではなく 404 (Invalid SID.) がスローされ、70 秒以上ごとに繰り返されます。

他の誰かがこの問題を抱えていて、それを解決する方法を知っていますか? 私はイライラしています!

前もって感謝します、
ピエール

4

1 に答える 1

1

実装を放棄しましたが、最初に言及した問題は、サーバーがクライアントが稼働していることをサーバーが知るために Openfire 接続で行う単純な継続的な ping です。2 番目のエラーは、正確にはわかりませんが、通信を途中で中断し、正常に終了しないために発生する可能性があります。これにより、strophe クライアントが再びポートにバインドする際にいくつかの問題に直面する可能性があります。また、上記の ping メカニズムが原因で、繰り返し問題に直面します。window.onbeforeunload イベントがトリガーされた後に、connection.disconnect メソッドを呼び出すこともできます。これにより、正常な終了が保証され、適切な再接続が行われます。

于 2014-11-16T02:43:04.210 に答える