我想嘗試在多個瀏覽器/客戶端之間保持計時器同步,這些瀏覽器/客戶端正在倒計時到存儲在數據庫中的日期。如果由於某種原因日期發生變化,那麼我需要適當更新計時器。這將最終成爲我正在嘗試創建的這款JavaScript遊戲的一部分,但在我真正能夠繼續之前,我需要遊戲的核心。通過數據庫中存儲的日期/時間在多個瀏覽器中保持倒數計時器同步
這個計時器基本上是動態的,因爲如果需要的話,需要很容易地改變時間。我想出了通過PHP腳本輪詢數據庫的想法,每秒都會進行更改,這也有助於跨瀏覽器同步定時器。但是,這似乎是相當服務器密集型的,並且如果存在潛在的延遲,實際上可能不實際同步定時器。
任何想法會有幫助,謝謝。
SQL:
CREATE TABLE timer(
timer_id INT PRIMARY KEY AUTO_INCREMENT,
timer_date DATETIME NOT NULL
);
JQuery的:
$(document).ready(function() {
$('#button').click(function() {
//get timer id
var timerId = $('#button').attr('tid');
//disable button
$('#button').attr('disabled', 'disabled');
//send ajax request
$.ajax({
url: "process.php",
type: "POST",
data: "id="+timerId,
dataType: "json",
success: function(data){
//IF TIMER HAS CHANGED UPDATE ELSE DON'T DO IT
//re-enable button
$('#button').removeAttr("disabled");
}
});
});
定時器需要的實際時間有多接近?你允許的錯誤是什麼? – JesseBuesking
@JesseB儘可能的說實話,但我知道要保持它們的準確性非常困難。 –
是否http://stackoverflow.com/questions/2663882/how-does-facebook-chat-avoid-continuous-polling-of-the-server以任何方式幫助你? – JesseBuesking