News for hackers. Stuff that matters.
Re:Server Sent Events by franky47 on Monday May 15, 2023 @03:51PM (#35953568)
One major issue I encountered with SSE is dealing with reconnection. WebSocket makes it very easy to detect differences between a loss of network connectivity, a server dying, and a client exiting properly (eg: closing the tab), on either side of the socket.

Maybe there are facilities to do so with SSE that I don't know of, but my experience in reliable server-to-client-only comms with it has been a bit rough.

Re:Server Sent Events by VWWHFSfQ on Monday May 15, 2023 @04:27PM (#35954054)
You pretty much just have to listen for and handle premature closing of the underlying TCP connection. It's the only form of dead peer detection you'll get if someone just abrubtly closes their browser tab.
Re:Server Sent Events by teaearlgraycold on Monday May 15, 2023 @04:49PM (#35954295)
Do server frameworks really require you to think of the TCP connection?
Re:Server Sent Events by VWWHFSfQ on Monday May 15, 2023 @09:18PM (#35956692)
High performance servers and frameworks will always have to think about the underlying sockets
Re:Server Sent Events by DaiPlusPlus on Tuesday May 16, 2023 @02:29AM (#35958333)
Not TCP specifically, but ASP.NET Core binds your controller/action methods' CancellationToken parameter (if present) to HttpContext.RequestAborted - so assuming one uses it correctly (e.g. tying it to things like SQL TRANSACTION/ROLLBACK) then that helps prevent inadvertent changes if the user clicked their browser's Stop button after a POST, or gracefully handle long file upload failures, and so on.
Re:Server Sent Events by dontlaugh on Tuesday May 16, 2023 @09:26AM (#35961577)
This also matters for load balancers. With SSE or chunked encoding long polling, it's possible to lose the client connection without the load balancer closing the connection to the server, at least for a while.

WebSockets make it easy to do periodic heartbeats from the server, which puts an upper bound on how long a client connection can be in an uncertain state.

This also enables client presence data, even if the client only ever receives messages.