ホームページ  >  記事  >  バックエンド開発  >  .Net MVC のロングポーリング例の実装の概要

.Net MVC のロングポーリング例の実装の概要

零下一度
零下一度オリジナル
2017-06-17 10:30:032015ブラウズ

この記事では主にロングポーリングを実装するための.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 までご連絡ください。