SuaveIO/suave

EventSource: how to know the client disconnected?

katatunix opened this issue · 2 comments

In the module [EventSource] (https://suave.io/Suave.html#def:module%20Suave.EventSource) I don't see any function to detect the client is disconnected.

My use case is: the server side (using Suave of course) observes data from an external source, then forward those data to the client side. But it should stop that observation, and finish the socket computation, as soon as the client disconnected.

That would be nice if there is an Async<unit> which will be done when the client disconnected.

How to achieve that?

The only way to know if the client is connected is by polling the socket or trying to read or write to it which would raise a connection reset exception.

I think you would need to bake such a thing into your handler.

Also related #321