質問

strophe の「attach()」関数を機能させるのに非常に苦労しています。

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

次のページで、新しい SID と RID (1 ずつ増やした後) を使用しようとすると、セッションがすでに破棄されています。Ejabberd は「HTTP put でエラーが発生しました。理由:bad_key"

一体何が起こっているのでしょうか?

役に立ちましたか?

解決 2

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

ページの読み込みの間に、rid が 2 回インクリメントされていました。セッション接続が機能し始めた場合にのみ値を増加させます。

なぜセッションがキャンセルされたのかはわかりませんが、何が起こったのかは次のとおりです。

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

手がかりはありますか?

他のヒント

ejabberdまたはFirebugのからのより多くのログ情報がなければ、これは、診断が難しいでしょう。正しいRIDは、実際にはクッキーに保存されていますか? ejabberdは、あなたが送信された最後のスタンザでどのように考えず、それはRIDどのような値を持っているのですか?最初のスタンザと新しいページの最初のRID値は何ですか?どのくらいこれら二つのスタンザの間に?

更新:セッションはキャンセルされます理由は、BOSHのセキュリティモデルによるものです。効果的に、SIDとRIDペアは秘密です。あなたがペアを知っている場合は、セッションに接続することができます。推測することができるという形成する人々を保つために、RID ISは非常に大きな空間からランダムに選びました。あなたが現在のRIDからRID外に非常に小さなウィンドウを送信する場合、それはセッションを切断します。ウィンドウは、通常、(5 + RID、RID)程度である。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top