1

我在 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);
}

问题是我只能在向客户端发送内容时检测到客户端断开连接。而且我不想轮询它,这首先违背了使用服务器发送事件的全部目的。

4

2 回答 2

1

尝试查看SignalR - 对于长轮询很有用,服务器通知将不难实现。可用时使用 websocket。使用集线器可以非常轻松地实现您的场景。

于 2012-03-19T14:06:53.193 回答
0

如果你想在自己的代码中做,你可以简单地修改你的例子:

Response.ContentType = "text/event-stream";
while (Response.IsClientConnected)
{
   if(thereIsAMessage)
   {
       Response.Write(message);
       Response.Flush();
   }

   System.Threading.Thread.Sleep(1000);
}

但是,我仍然不确定这是使用 Thread.Sleep 方法的最佳实现。

于 2012-10-08T18:33:42.853 回答