ホームページ >バックエンド開発 >C#.Net チュートリアル >.Net MVC ロングポーリングの実装方法について
この記事では主にロングポーリングを実装するための.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 サイトの他の関連記事を参照してください。