2016-09-27 9 views
0

spring-mvcに注釈などがあります。クライアントが接続を切断したり、要求をキャンセルしたりするとすぐに何かを呼び出せますか?私は通常非常に迅速ですが、ユーザーの入力に依存することができますいくつかの秒のために行く休憩サービスを得ました。私はクライアントが接続を解除するとすぐにサーバー側で処理を取り消したいと思います。Spring MVC要求中断フック

クライアントが結果を得るためにポーリングする必要がある場合は実装することができますが、クライアントがブラウザを閉じるなどの処理をキャンセルしたい場合や、単にカール要求をキャンセルする場合があります。ここで春に提供されるフック?

+0

より見ることができます。 – chrylis

+0

HTTPはステートレスではありません。ただし、TCPがステートフルなので、TCP接続が中断されたかどうかを確認できます。 – vtor

+0

それをRESTサービスと呼ぶ必要はありません。私は分を取るかもしれないプロセスを持っていて、それはリソースを要します。ユーザーが辛抱強く、側面を離れてキャンセルすると、私はリソースを元に戻したいと思う。だから私はクライアントがまだ待っているかどうかを私に知らせる何かが必要です。しかし、適切な時間に終了した場合やリクエストが殺された場合に、ユーザーが数回ポーリングすることなくカールしても問題ありません。 したがって、私は傍受することができるはずのクライアントとサーバーの間に何らかのタイプの接続またはチェックが必要です。問題はどうですか? –

答えて

0

リクエストがサーバーに送信されると、キャンセルすることはできません。

サーバーに、前のプロセスのキャンセルを求める別の要求を送信できます。 js/htmlイベントbeforeunloadを使用することができます。

あなたは、RESTサービスのようなあまり鳴らないことをここ

http://www.w3schools.com/tags/ev_onbeforeunload.asp

jquery beforeunload when closing (not leaving) the page?

+0

ユーザーが別のクライアントを使用するとどうなりますか?たとえばカール。そのオープンで、そのように使用する必要がありますが、それは紛失した接続や何かによってキャンセルされることがあります。この場合、私はバックエンド操作を取り消す特別なメソッドを呼びたいと思っています。 –

+0

接続が失われた場合、要求は決してサーバーに到達しません。接続がサーバーに到達すると、終了します。 httpは非同期プロトコルであり、要求は他の要求には添付されず、すべてが独立していることを理解することが重要です。 – reos

+0

はい、しかし、リクエストが戻ってくるまで、ブロックされています。だから、どうやってそれを待つのだろう? curlリクエストを実行している間にサービスを終了すると、curlがサーバ上でそれを行うことができるはずで、リクエストが実行されているスレッドをキャンセルするだけで済むはずです。リソース。 –

関連する問題