4

ストローフィの「attach()」関数を機能させるのに多くの問題があります。

私は、ユーザーがページを閲覧すると同時にチャット接続を維持するソーシャルネットワークに取り組んでいます。このリンクhttp://groups.google.com/group/strophe/browse_thread/thread/430da5e788278f3a/93c48c88164f382f?show_docid=93c48c88164f382f&fwc=1のように、すべてのページで再接続/再認証したくないので、アンロード時にSIDとRIDをCookieに入れます。

次のページで、新しいSIDとRIDを使用しようとすると(1ずつインクリメントした後)、セッションはすでに破棄されています。Ejabberdは「HTTPputのエラー。理由:bad_key」を報告します

WTFは起こっていますか?

4

2 に答える 2

6

ejabberd または Firebug からのログ情報がなければ、これを診断するのは困難です。正しい RID が実際に Cookie に保存されていますか? ejabberd は、あなたが送信した最後のスタンザは何だと考えていますか? また、その RID 値は何ですか? 新しいページの最初のスタンザと最初の RID 値は? これらの 2 つのスタンザの間はどのくらいですか?

更新: セッションがキャンセルされる理由は、BOSH のセキュリティ モデルによるものです。事実上、SID と RID のペアは秘密です。ペアがわかれば、セッションにアタッチできます。人々が推測できるようにするために、RID は非常に大きなスペースからランダムに選択されます。現在の RID から非常に小さなウィンドウの外に RID を送信すると、セッションが切断されます。ウィンドウは通常 (RID、RID + 5) 程度です。

于 2010-04-12T15:46:06.117 に答える
1

私はなんとか問題を解決することができました。

削除は、ページの読み込みの間に2倍にインクリメントされていました。セッションアタッチが機能し始めたら一度だけインクリメントします。

セッションがキャンセルされた理由はわかりませんが、次のようになりました。

  1. RIDは以前のものより+2多いため、ejabberdはリクエストをバッファに保存し、クライアントに転送しません
  2. 次の2つのリクエストも保存されます
  3. その後の1つは、ejabberdがセッションをキャンセルする原因になります

手がかりはありますか?

于 2010-04-13T11:25:23.523 に答える