我正在开发一个非常类似于在线考试的网站,并且我想要设计一种方法,以便我可以向用户指出他们当前是否已连接或断开与我的服务器。为此,我经常ping我服务器上的一个空文件,以确定连接是否可用。该代码看起来是这样的 -如何指示用户是否在客户端上线
$(document).ready(function(){
//Defining the function
var req = function() {
$.ajax({
url : 'ping.php',
error: function(){$("#circle").css("background","red");},
complete : function() {
$("#circle").css("background","green");
req();
}
});
};
//Calling the function
req();
//Rest of my code
});
现在,我的理解是,只要调用完成,圆将是绿色的,如果发生错误,它会变成红色,而Ajax调用将停止。我的问题如下:
有没有更好的方法来做到这一点?例如,Google或Facebook如何标记在线用户?
这个递归Ajax调用会以任何方式降低/减慢我的服务器吗?
注意:它实际上并不是我的服务器。我没有管理权,所以这是一个主要关心的问题。
请帮我看看这里。谢谢!
我的一个建议是遏制你的ping。每5秒一次可能足够快。你可以用setTimeout(req,5000)来做到这一点。在你完整的回调中。 – bhspencer 2015-02-07 21:39:58
请注意,如果您获得成功和错误,完成将触发,因此在您的情况下,您始终将背景设置为绿色。你应该设置背景为绿色的成功,只调用req在完整的 – bhspencer 2015-02-07 21:42:41
你应该尽量只做头部请求,http://stackoverflow.com/questions/333634/http-head-request-in-javascript-ajax,这将使其对客户端连接和您的服务器EASY有效负载。看看这个https://developer.mozilla.org/en/docs/Online_and_offline_events它可能不适用于所有设备和浏览器:( – 2015-02-07 21:47:07