6

strophe.jsとjQueryを使用してWebベースのMUCクライアントを作成しましたが、使用できないプレゼンスをルームに送信し、ウィンドウのjqueryアンロードイベントでユーザーを切断しようとしています。ユーザーが移動したり、ブラウザータブを閉じたりした場合は、MUCからログアウトする必要があります。

このイベントで実行しているコードを、ページにあるログアウトボタンを使用してテストしたので、スタンザが正しいと確信しています。ブラウザウィンドウが閉じている場合、stropheはスタンザの送信に問題があると思います。ここに回避策はありますか?onbeforeunloadイベントも試しましたが(完全にクロスブラウザー互換ではないことはわかっています)、それも機能していないようです。

どんなアドバイスも大歓迎です!

ありがとう、ジョン

4

2 に答える 2

11

必ず同期モードに切り替えて、電話をかけるflush()前に電話してくださいdisconnect()。次に例を示します。

var Client = {
  connect: function(spec) {
    this.connection = new Strophe.Connection(spec.url);
  },

  disconnect: function() {
    this.connection.options.sync = true; // Switch to using synchronous requests since this is typically called onUnload.
    this.connection.flush();
    this.connection.disconnect();
  }
}

次に、onbeforeunload/onunloadにバインドできます。(jQueryの例)

var client = new Client;
client.connect();
$(window).unload(function() {
  client.disconnect();
});
于 2011-03-16T00:12:19.920 に答える
2

パッチは必要ありません。組み込みのソリューションがあります。

connection.flush();
connection._options.sync = true;    
connection.disconnect();   
于 2014-01-05T20:00:13.130 に答える