燃え上がったサーバー側は、クライアント側が切断されたことを知りません。しかし、クライアント側のネットワークがダウンしていることを知っているようです。
私の場合、ポーリングチャネルを使用し、blazedsのソースコードをダウンロードして、FlexClientOutboundQueueProcessor.flush(MessageClient messageClient, List<Message> outboundQueue)
メソッドにログ出力を追加します。
次に、これを見ました。クライアントがサブスクライブすると、サーバー側がFlexClientOutboundQueueProcessor.flush
3秒ごとにメソッドを呼び出し、flushメソッドで追加したものを出力します。次に、クライアントのネットワークのみをシャットダウンし、ブラウザー(ネットワークが異なるクライアントとサーバー)を閉じません。 )、サーバー側は何も出力しないことがわかりました。これは、サーバー側がflushメソッドを呼び出さないことを意味します。
そして、30分以上クライアントのネットワークを回復した後、サーバー側は引き続きフラッシュメソッドを呼び出します(クライアントのブラウザーを閉じても、クライアントのセッションは破棄されません。30分後、サーバー側はセッションを破棄します) 。
今、私は2つの質問があります:
サーバー側は、クライアントのネットワークがダウンしたことをどのように認識しますか?クライアントのネットワークを監視するリスナーはありますか?もしそうなら、それはどこにありますか?そうでない場合、コードはどこでどのように使用されますか?
FlexClientOutboundQueueProcessor.flush
サーバー側は3秒ごとにメソッドを呼び出すようですが、この間隔を構成できますか?そして、このタイミングタスクを開始または停止するコードはどこにありますか?