これのいくつかの実装を見つけるのは簡単です(たとえば、this questionを参照)。 HTML(ビートを送信してウェブサイトのページ)、コントローラ(ビートを受信)し、(あなたのハートビート機能付き)JavaScriptのファイル:あなたは3つのファイルが必要になります基本的なハートビートの実装については
。 HTMLファイルにJavaScriptコードを含めることもできますが、分離したままにする方が良い方法です。
HTMLファイル(Heart.cshtml)
注意あなたがJavaScriptファイルおよびjQueryの両方を含める必要があります。
ここでは、私の作業例の正確な内容を持っています。
@ Url.Action( "ReceiveHeartbeat"、 "Auxiliary")は、コントローラ(AuxiliaryController)のメソッド(ReceiveHeartbeat)にアドレスを与えます。
<head>
<script type="text/javascript" src="~/Scripts/heartBeat.js"></script>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>
<script type="text/javascript">
LaunchHeartBeat('@Url.Action("ReceiveHeartbeat", "Auxiliary")');
</script>
</body>
のJavascript(heartBeat.js)
他の人々はのsetTimeoutを使用していますが、のsetTimeoutを使用してループをしたい場合はクリーナーです。 setInterval(myFunction、myInterval);を使用して2つの関数を書くことをお勧めします。(下記参照)。 Ajaxリクエストにさらに多くのものを追加することができます(たとえば、の成功:アクション)。
function LaunchHeartBeat(actionUrl) {
var intervalMilliseconds = 750;
setInterval(function() {
$.ajax({
type: "POST",
url: actionUrl
});
}, intervalMilliseconds);
}
コントローラ(AuxiliaryController。CS)
[HttpPost]
public JsonResult KeepSessionAlive()
{
// You may do stuff here
return new JsonResult { Data = "success" };
}
編集:Javascriptのファイル用の代替構文:
var actionUrl = null;
var intervalMilliseconds = 1000;
function LaunchHeartBeat(myUrl) {
actionUrl = myUrl;
setInterval(HeartBeat, intervalMilliseconds);
}
function HeartBeat() {
$.ajax({
type: "POST",
url: actionUrl
});
}