2011-01-27 5 views
0

標準のBOSHメソッドを使用してサーバーに接続すると、Web用にan XMPP clientと書かれています。ウィンドウにXMLHTTPRequestを投稿する

ユーザーがウィンドウを閉じるときにユーザーの接続が開いたままになる問題があります。私はプロトコルの特異性のためにそのような活動の検出に応じることができません。 BOSHが設計された理由の1つは、接続損失の多いネットワークを処理することでした。したがって、あらかじめ指定された時間枠内で別の接続が開かれると、サーバーへのBOSH(Comet)接続の損失が許容されます。したがって、本当にユーザーを切断するには、別のXMLHTTPRequest経由でXMPPサーバーに切断メッセージを送信する必要があります。

XMLHTTPRequestの非同期性のため、これは私が知る限り、不可能です(可能な場合はプライバシー問題になるかもしれません)。または私は間違っていますか?誰かがウィンドウを閉じたときにサーバーに1つの最終リクエストを送信する方法についていくつかの光を当てることができますか?

答えて

0

これは私が使用したハックです:素敵なハックながら

window.onunload = function() { 
    // I use Prototype to make the Ajax request, 
    // but you can use any library you like. 
    new Ajax.Request('closeConnection.php'); 
    alert('While they\'re reading this message, the Ajax should be complete.'); 
}; 
+0

ウィンドウ/タブを閉じるには非対話型である必要があるため、これは解決策ではありません。 –

関連する問題