How to detect a disconnection as soon as it happens on ASP.NET without polling?
-
25-05-2021 - |
Question
I have a server-sent events handler in ASP.NET
Response.ContentType = "text/event-stream";
while (true)
{
if(thereIsAMessage)
{
Response.Write(message);
Response.Flush();
if (Response.IsClientConnected == false)
{
break;
}
}
System.Threading.Thread.Sleep(1000);
}
The problem is that I can only detect a client disconnection when I send something to the client. And I don't want to poll it, which defeats the whole purpose of using Server-sent events in the first place.
Solution
Try to look at SignalR - useful for long polling, server notifications won't be difficult to implement. Uses websockets when available. Yours scenario can be implemented very easily using hubs.
OTHER TIPS
If you want to do in your own code, you can simply modify your example:
Response.ContentType = "text/event-stream";
while (Response.IsClientConnected)
{
if(thereIsAMessage)
{
Response.Write(message);
Response.Flush();
}
System.Threading.Thread.Sleep(1000);
}
But still, I'm not sure this is optimal implementation using Thread.Sleep approach.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow