1

質問が単純な場合は申し訳ありませんが、この一般的なシナリオで何が起こるかわかりません: 何らかの問題または障害/システム障害 (あらゆる種類の障害など) が原因でブラウザーがクラッシュした場合、websocket はどうなりますか?実行されていた接続?それは閉じられますか、それともその状態はどうなりますか?

私は netty websocket 実装を使用しています。さて、特にnetty websocket の実装では、上記のシナリオで何が起こるでしょうか? (私が試したとき、私はこれを取得します:ブラウザを手動で閉じると、接続は閉じられますが、ブラウザプロセスを強制終了すると、これは起こりません)。接続が閉じられていない場合、メッセージの送信中にそれを検出/処理するにはどうすればよいですか。それ以外の場合、メッセージの送信中にClosedChannelException、メッセージを送信しようとすると発生します。

編集:上記のエラーをチェックする以外に、netty 実装を使用しているときに websocket 接続が閉じられたことを知る方法はありますか?

4

1 に答える 1

4

ClosedChannelException をキャッチして、きれいに閉じられた接続と同じように処理する必要があると思います。

Websocket セッションが高価で、切断された接続をより迅速に見つけたい場合は、定期的に各クライアントにping要求を送信できます。Netty には、これをサポートするように見える PingWebSocketFrame クラスがあります。

于 2012-07-30T09:44:45.580 に答える