5

通常、これは重要ではなく、私の状況ではそれほど重要ではないかもしれませんが、これを実装する合理的な方法があるかどうか知りたいです.

マイページは自動的に Web ソケット接続を開きます。より良いクライアントになるために、クライアントがそれ自体をクリーンアップし、ページがアンロードされる前に websocket を閉じる必要があります。

ページがアンロードされたときにブラウザーが私を呼び出す先見の明を持っていることを願っていclose()ますが、そうでない場合は、onbeforeunloadメッセージ (またはそのようなもの) を利用して「最終的なクリーンアップ」を行うにはどうすればよいですかatexit()( C)?

何らかの理由で、クライアントに「終了」メッセージを websocket サーバーに送信させたいシステムがあるとします。

私は今これを行うことができます:

$(window).on('beforeunload', function () {
    websocket.close(); // websocket is a WebSocket
});

しかし、close()実際には非同期呼び出し (そうですか?) であり、実際にページをアンロードする前に socket.onclose コールバックが起動することを確認したいと思います! これはできますか?

4

2 に答える 2

1

最新のブラウザで非同期呼び出しが完全に実行されることを確認する確実な方法はありません。古いバージョンはwhileループで保持される可能性がありますが、現在のブラウザーはすべてのプロセスを強制終了して続行します。理由は、ユーザーエクスペリエンスを高速化することを望んでいるためです。あなたがそれらを保持すると、害を及ぼします。

于 2012-08-07T19:10:57.257 に答える
1
window.onunload=function(){
//your code here
}

私たちはこれを持っていると思います。

于 2012-08-07T19:06:22.267 に答える