この記事では主にロングポーリングを実装するための.Net MVCの関連情報を詳しく紹介しますので、興味のある方は参考にしてください
ロングポーリングとは何ですか?
ロングポーリングは、クライアントがリクエストを頻繁に更新して送信することなく、サーバー上の変更をリアルタイムでクライアントに送信できる「サーバープッシュ」テクノロジーを実装する方法です。
ロングポーリングの原則?
クライアントはサーバーに Ajax リクエストを送信し、サーバーはリクエストを受信した後、応答情報を返しず、関連する処理が完了するまで接続を閉じません。クライアントは応答情報を受信すると、関連する処理を実行し、完了後に新しいリクエストをサーバーに送信します。
ロングポーリングの応用シナリオ?
ロングポーリングは、サーバー側の変更をリアルタイムでクライアントに送信する必要がある Web インスタント メッセージング、監視、リアルタイム見積システムなどのシナリオでよく使用されます。
ロングポーリングの長所と短所は何ですか?
利点: メッセージがない場合、頻繁なリクエストはサーバーに送信されません。
短所: サーバーの接続を維持するためにより多くのリソースを消費します
実装:
フロントエンドコード:
コールバックで、関数を再度呼び出し、各リクエストが閉じられた後に開始されます次のリクエスト。
<p id="container"></p> <script type="text/javascript"> $(function () { function longPolling() { $.getJSON("/DateTime/GetTime", function (json) { $("#container").append(json.date + "<br/>"); longPolling(); }); }; longPolling(); }); </script>
バックエンドコード:
バックグラウンドコントローラーは非同期を使用する必要があり、AsyncController基本クラスを継承します
public class DateTimeController : AsyncController { public void GetTimeAsync() { //计时器,5秒种触发一次Elapsed事件 System.Timers.Timer timer = new System.Timers.Timer(5000); //告诉.NET接下来将进行一个异步操作 AsyncManager.OutstandingOperations.Increment(); //订阅计时器的Elapsed事件 timer.Elapsed += (sender, e) => { //保存将要传递给GetTimeCompleted的参数 AsyncManager.Parameters["nowdate"] = e.SignalTime; //告诉ASP.NET异步操作已完成,进行GetTimeCompleted方法的调用 AsyncManager.OutstandingOperations.Decrement(); }; //启动计时器 timer.Start(); } public ActionResult GetTimeCompleted(DateTime nowdate) { return Json(new { date = nowdate.ToString("HH:mm:ss") + " Welecom " }, JsonRequestBehavior.AllowGet); } }
以上が.Net MVC のロングポーリング例の実装の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。