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 に答える