ホームページ >バックエンド開発 >C#.Net チュートリアル >.Net MVC ロングポーリングの実装方法について

.Net MVC ロングポーリングの実装方法について

巴扎黑
巴扎黑オリジナル
2018-05-23 16:22:131995ブラウズ

この記事では主にロングポーリングを実装するための.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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。