以下簡化代碼(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