[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jetty-users] Is there a pattern to know when a client disconnects?
|
Hi,
On Tue, May 2, 2023 at 10:33 PM Adam Fine <adamcfine@xxxxxxxxx> wrote:
>
> Hi all, My use case is that I need to cancel a long running database execution if the client disconnects.
>
> Setting setMaxInactiveInterval in combination with a HttpSessionListener sessionDestroyed event seems promising but the events only generate on the next attempt to connect with the expired session. I could probably implement a thread which periodically checked every session but I'm wondering if there are any common patterns for this use case. I see AsyncContext raised as an option but the listeners on the AsyncContext do not detect if a client disconnects and leave me in the same place as using a HttpSessionListener.
>
There is no pattern available for HTTP/1.1, because the server must
stop reading after the request (so it cannot read the -1 as the result
of the client closing), otherwise it is open to infinite buffering
attacks.
It can be done by the server returning a response with URIs that the
client can "poll" to check whether the request finished or "poll to
cancel".
In HTTP/2 the client may send a RST_STREAM so the server can detect it
and notify AsyncListener.onError(), so way easier, but only HTTP/2
specific.
--
Simone Bordet
----
http://cometd.org
http://webtide.com
Developer advice, training, services and support
from the Jetty & CometD experts.