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.

Was it helpful?

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
scroll top