[undertow-dev] SSE close task

Nel Taurisson nel.taurisson at gmail.com
Mon Nov 23 23:22:02 EST 2015


Ok, I understand : the only way to figure out that a client connection is
closed is by sending a message as sending will eventually fail.

Reading what your saying, even if the client is disconnected, the first
attempt to send a message will not fail (from the server point of view), is
this correct ?

Does that mean that the server cannot fully determine that the client
received a message ?

Thanks
Nel



2015-11-24 1:16 GMT+01:00 Stuart Douglas <sdouglas at redhat.com>:

> I have commented on the JIRA, but will include it here for anyone who is
> following:
>
> The close listener is called, however due to the nature of SSE and TCP
> this behavior is not super intuitive.
>
> Basically when the close() is called on the client side the client sends a
> FIN to the server, however as the server is not expecting any more data
> from the client this has no effect (in fact the client may have already
> sent a FIN if connection:close was sent).
>
> From the servers point of view the socket is still functioning normally,
> up until the point where it attempts to send some data. When this happens
> the client will response with an RST. Unfortunately the server still has no
> idea that the socket is broken, as the RST arrives after the data has been
> sent (unless the data is very large). When the server attempts to send for
> the second time after the client has closed the connection it will receive
> an IOException from the RST, the connection will be closed and the listener
> invoked.
>
> If you want to detect this in a timely manner your only real option is
> some kind of heartbeat message, due to the way TCP and SSE work there is
> not really any other options.
>
>
> Stuart
>
> ----- Original Message -----
> > From: "Nel Taurisson" <nel.taurisson at gmail.com>
> > To: "Stuart Douglas" <sdouglas at redhat.com>
> > Cc: undertow-dev at lists.jboss.org
> > Sent: Tuesday, 24 November, 2015 8:31:35 AM
> > Subject: Re: [undertow-dev] SSE close task
> >
> > Ok, thanks, here's the JIRA with a failing test attached as a patch:
> >
> > https://issues.jboss.org/browse/UNDERTOW-589
> >
> > Nel
> >
> > 2015-11-23 7:46 GMT+01:00 Stuart Douglas <sdouglas at redhat.com>:
> >
> > > This sounds like a bug, can you file a JIRA?
> > >
> > > https://issues.jboss.org/projects/UNDERTOW
> > >
> > > Stuart
> > >
> > > ----- Original Message -----
> > > > From: "Nel Taurisson" <nel.taurisson at gmail.com>
> > > > To: undertow-dev at lists.jboss.org
> > > > Sent: Monday, 23 November, 2015 5:00:10 PM
> > > > Subject: [undertow-dev] SSE close task
> > > >
> > > > Hi,
> > > >
> > > > I'm playing with the SSE handler and I can't figure how the close
> task is
> > > > working. I thought the close task would be invoked when the client
> closes
> > > > the connection but it doesn't seem to be the case.
> > > >
> > > > I slightly modified the example code to register a close task when a
> > > > connection is initiated, here's the code :
> > > >
> > > > ServerSentEventConnectionCallback callback = new
> > > > ServerSentEventConnectionCallback() {
> > > > @Override
> > > > public void connected(ServerSentEventConnection connection, String
> > > > lastEventId) {
> > > > System.out.println("adding close task on connection...");
> > > > connection.addCloseTask(channel -> System.out.println("goodbye cruel
> > > > world..."));
> > > > }
> > > > };
> > > > final ServerSentEventHandler sseHandler =
> > > > Handlers.serverSentEvents(callback);
> > > >
> > > > It appears to me that the close task is only invoked when the server
> > > stops,
> > > > but now when the client closes. Is it the expected behavior ? If so,
> is
> > > > there any other way to be notified of a client disconnection ?
> > > >
> > > > Thanks a lot.
> > > >
> > > > Nel
> > > >
> > > >
> > > > _______________________________________________
> > > > undertow-dev mailing list
> > > > undertow-dev at lists.jboss.org
> > > > https://lists.jboss.org/mailman/listinfo/undertow-dev
> > >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/undertow-dev/attachments/20151124/9668df5f/attachment.html 


More information about the undertow-dev mailing list