以下简化代码(C#)是SSE的服务器端。当我使用Thread.Sleep()
代替Response.Write("retry:10000\n\n")
其他ajax请求时,请保持挂起。我如何创建一个合适的SSE事件流?SSE thread.sleep块其他线程
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);
}
P.S.我也计划使用SqlDependency
,但还没有弄清楚。
编辑: 我想问题在于sessionstate。
它被放置在一个while循环中,并且有点矫枉过正从未杀死任何人 – Bert