.Net MVCロングポーリングを実現
5442 ワード
長いポーリングとは?
ロングポーリングは、クライアントが頻繁にリクエストをリフレッシュしたり送信したりすることなく、サービス側で発生した変化をリアルタイムでクライアントに転送する「サーバプッシュ」テクノロジーの実装方法の1つです.
ロングポーリングの原理?
クライアントはサーバにAjax要求を送信し、サーバは要求を受信した後、接続を維持してメッセージを返さず、関連処理が完了するまで応答情報を返して接続を閉じ、クライアントは応答情報を受信した後、関連処理を行い、処理が完了した後、サーバに新しい要求を送信したい.
長いポーリングの適用シーン?
長いポーリングは、Webのタイムリーな通信、監視、インスタントオファーシステムなど、サービス側の変化をクライアントにリアルタイムで送信する必要があるシーンによく使用されます.
長いポーリングの長所と短所?
利点:メッセージがない場合、サーバにリクエストを頻繁に送信しません.
欠点:サーバが接続を維持するのに比較的リソースがかかる
実装:
フロントコード:
コールバックでは、関数を再度呼び出し、リクエストが閉じるたびに次のリクエストを開始します.
バックグラウンドコード:
バックグラウンドのControllerは非同期を使用してAsyncControllerベースクラスを継承します
ロングポーリングは、クライアントが頻繁にリクエストをリフレッシュしたり送信したりすることなく、サービス側で発生した変化をリアルタイムでクライアントに転送する「サーバプッシュ」テクノロジーの実装方法の1つです.
ロングポーリングの原理?
クライアントはサーバにAjax要求を送信し、サーバは要求を受信した後、接続を維持してメッセージを返さず、関連処理が完了するまで応答情報を返して接続を閉じ、クライアントは応答情報を受信した後、関連処理を行い、処理が完了した後、サーバに新しい要求を送信したい.
長いポーリングの適用シーン?
長いポーリングは、Webのタイムリーな通信、監視、インスタントオファーシステムなど、サービス側の変化をクライアントにリアルタイムで送信する必要があるシーンによく使用されます.
長いポーリングの長所と短所?
利点:メッセージがない場合、サーバにリクエストを頻繁に送信しません.
欠点:サーバが接続を維持するのに比較的リソースがかかる
実装:
フロントコード:
コールバックでは、関数を再度呼び出し、リクエストが閉じるたびに次のリクエストを開始します.
<div id="container"></div>
<script type="text/javascript">
$(function () {
function longPolling() {
$.getJSON("/DateTime/GetTime", function (json) {
$("#container").append(json.date + "<br/>");
longPolling();
});
};
longPolling();
});
</script>
バックグラウンドコード:
バックグラウンドのControllerは非同期を使用して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);
}
}