我在ASP.NET中有一个server-sent events处理程序
Response.ContentType = "text/event-stream";
while (true)
{
if(thereIsAMessage)
{
Response.Write(message);
Response.Flush();
if (Response.IsClientConnected == false)
{
break;
}
}
System.Threading.Thread.Sleep(1000);
}
问题是我只能在向客户端发送内容时检测到客户端断开连接。而且我不想轮询它,这首先打败了使用服务器发送事件的整个目的。
答案 0 :(得分:2)
尝试查看SignalR - 对于长轮询很有用,服务器通知将不难实现。可用时使用websockets。使用集线器可以非常轻松地实现您的场景。
答案 1 :(得分:0)
如果您想在自己的代码中进行操作,只需修改您的示例:
Response.ContentType = "text/event-stream";
while (Response.IsClientConnected)
{
if(thereIsAMessage)
{
Response.Write(message);
Response.Flush();
}
System.Threading.Thread.Sleep(1000);
}
但是,我仍然不确定这是使用Thread.Sleep方法的最佳实现。