很容易找到一些花哨的实现(例如,参见this question)。
对于基本的心跳实现,您将需要三个文件:HTML(发送心跳的网站页面)、controller(接收心跳)和 >JavaScript 文件(带有你的心跳功能)。您可以在 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); 编写两个函数(见下文)。您可以向 Ajax 请求添加更多内容(例如,success: 操作)。
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
});
}