How to detect a disconnection as soon as it happens on ASP.NET without polling?
-
25-05-2021 - |
Frage
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.
Lösung
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.
Andere Tipps
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.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow