【发布时间】:2016-03-27 11:56:45
【问题描述】:
以下简化代码 (C#) 是 SSE 的服务器端。当我使用 Thread.Sleep() 而不是 Response.Write("retry:10000\n\n") 时,其他 ajax 请求保持挂起。如何创建合适的 SSE 事件流?
Response.ContentType = "text/event-stream";
DateTime echo;
while (true)
{
var db = Database.Open("SSE");
echo = db.QueryValue("select last_change from table");
db.Close();
Response.Write(string.Format("data:{1}\n\n", echo.GetHashCode()));
///// debug this works
Response.Write("retry:10000\n\n");
Response.Flush();
Response.Close();
return;
/////////// this doesn't work
Response.Flush();
if (Response.IsClientConnected == false)
{
break;
}
System.Threading.Thread.Sleep(10000);
}
附:我也打算使用SqlDependency,但还没有弄清楚。
编辑: 我认为问题在于会话状态。
【问题讨论】:
标签: asp.net razor server-sent-events thread-sleep