这很容易找到一些奇特的实现(请参阅,例如,this question)。
对于基本心跳的实现则需要三个文件:HTML(网站页面发送节拍),该控制器(接收的节拍)和的JavaScript文件(与你的心跳功能)。您可以将JavaScript代码包含在HTML文件中,但最好将它分开。
这里有我的工作示例的确切内容:你需要包括JavaScript文件和jQuery
HTML文件(Heart.cshtml)
注意。 @ Url.Action(“ReceiveHeartbeat”,“Auxiliary”)给出了控制器(辅助控制器)中的方法(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请求添加更多内容(例如,成功:操作)。
function LaunchHeartBeat(actionUrl) {
var intervalMilliseconds = 750;
setInterval(function() {
$.ajax({
type: "POST",
url: actionUrl
});
}, intervalMilliseconds);
}
控制器(辅助控制器。CS)
[HttpPost]
public JsonResult KeepSessionAlive()
{
// You may do stuff here
return new JsonResult { Data = "success" };
}
编辑:
var actionUrl = null;
var intervalMilliseconds = 1000;
function LaunchHeartBeat(myUrl) {
actionUrl = myUrl;
setInterval(HeartBeat, intervalMilliseconds);
}
function HeartBeat() {
$.ajax({
type: "POST",
url: actionUrl
});
}
:对JavaScript文件替代语法