SuaveIO / suave

Suave is a simple web development F# library providing a lightweight web server and a set of combinators to manipulate route flow and task composition.
https://suave.io
Other
1.32k stars 198 forks source link

EventSource: how to know the client disconnected? #749

Open katatunix opened 3 years ago

katatunix commented 3 years ago

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?

ademar commented 3 years ago

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.

ademar commented 3 years ago

Also related #321