2014-04-17 34 views
5

有沒有辦法獲得服務器時間而無需首先設置它?例如,我可以簡單地做:檢索Firebase服務器時間而不先設置它

curl -X PUT -d '{".sv": "timestamp"}' https://SampleChat.firebaseIO-demo.com/servertime.json 

將返回該服務器的時間,但是這臺我的火力實例中的值servertime。我應該注意到我正在使用REST API。

+0

火力地堡是所有關於客戶端到客戶端通信。我不認爲它現在暴露了它的服務器端時間。 –

+0

@FrankvanPuffelen對於放入firebase的條目,您可以使用上面的JSON或使用'Firebase.ServerValue.TIMESTAMP'(請參閱:https://www.firebase.com/docs/managing-presence.html) - 我可以做的很好,但我不想寫實際的服務器時間,我只想得到它。上面的解決方案工作正常,我只是想能夠做到這一點,而不必寫/刪除值。 – Prisoner

+0

我面臨同樣的問題,它看起來只需要放置佔位符的虛擬時間戳字段,而不是在服務器將其更改爲實時時間戳時收聽它。如果你有多個用戶或應用程序要求它必須是虛擬的領域,因爲他們可以競爭一個。 – webduvet

回答

6

您可以檢索服務器時無需使用.info/serverTimeOffset寫它:

var fbRef = new Firebase(URL); 

var getServerTime = (function(ref) { 
    var offset = 0; 
    ref.child('.info/serverTimeOffset').on('value', function(snap) { 
     offset = snap.val(); 
    }); 

    return function() { 
     return Date.now() + offset; 
    } 
})(fbRef); 

var now = getServerTime(); 
+0

使用REST API時,這個值會是什麼?我會假設https://xxxxx.firebaseio.com/.info/serverTimeOffset.json,但它給出了'無效路徑' – Prisoner

+0

不可用通過REST API,afaik。 – Kato

+0

這就是我所想的(根據Firebase服務器時間,我使用服務在15分鐘後自動清除舊條目)。 – Prisoner