JQuery를 사용하여 세션을 유지하는 것 외에는 아무것도하지 않는 더미 HTTP 핸들러에 대한 간단한 AJAX 호출을 수행합니다.
function setHeartbeat() {
setTimeout("heartbeat()", 5*60*1000); // every 5 min
}
function heartbeat() {
$.get(
"/SessionHeartbeat.ashx",
null,
function(data) {
//$("#heartbeat").show().fadeOut(1000); // just a little "red flash" in the corner :)
setHeartbeat();
},
"json"
);
}
세션 핸들러는 다음과 같이 간단 할 수 있습니다.
public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState
{
public bool IsReusable { get { return false; } }
public void ProcessRequest(HttpContext context)
{
context.Session["Heartbeat"] = DateTime.Now;
}
}
핵심은 IRequiresSessionState를 추가하는 것입니다. 그렇지 않으면 세션을 사용할 수 없습니다 (= null). 물론 일부 데이터를 호출하는 JavaScript로 반환해야하는 경우 핸들러는 JSON 직렬화 된 객체를 반환 할 수도 있습니다.
web.config를 통해 제공 :
<httpHandlers>
<add verb="GET,HEAD" path="SessionHeartbeat.ashx" validate="false" type="SessionHeartbeatHttpHandler"/>
</httpHandlers>
추가 로 balexandre 2012 년 8 월 14 일에
이 예제를 너무 좋아해서 HTML / CSS와 비트 부분을 개선하고 싶습니다.
이것을 변경
//$("#heartbeat").show().fadeOut(1000); // just a little "red flash" in the corner :)
으로
beatHeart(2); // just a little "red flash" in the corner :)
추가
// beat the heart
// 'times' (int): nr of times to beat
function beatHeart(times) {
var interval = setInterval(function () {
$(".heartbeat").fadeIn(500, function () {
$(".heartbeat").fadeOut(500);
});
}, 1000); // beat every second
// after n times, let's clear the interval (adding 100ms of safe gap)
setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100);
}
HTML 및 CSS
<div class="heartbeat">♥</div>
/* HEARBEAT */
.heartbeat {
position: absolute;
display: none;
margin: 5px;
color: red;
right: 0;
top: 0;
}
다음은 구타 부분에 대한 실제 예 입니다. http://jsbin.com/ibagob/1/