我正在開發一個非常類似於在線考試的網站,並且我想要設計一種方法,以便我可以向用戶指出他們當前是否已連接或斷開與我的服務器。爲此,我經常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