2014-04-17 6 views
5

Czy istnieje sposób na uzyskanie czasu serwera bez wcześniejszego ustawienia? Na przykład, mogę po prostu zrobić:Pobieranie czasu serwera Firebase bez ustawiania go najpierw

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

która zwróci czas serwera, ale ten ustawia wartość servertime w moim Firebase instancji. Powinienem zauważyć, że używam API REST.

+0

Firebase jest o komunikacji klient-klient. Nie sądzę, że obecnie eksponuje czas po stronie serwera. –

+0

@FrankvanPuffelen W przypadku wpisów umieszczonych w firebase można użyć powyższego JSON lub użyć 'Firebase.ServerValue.TIMESTAMP' (patrz: https://www.firebase.com/docs/managing-presence.html) - który ja może dobrze, ale nie chcę pisać czasu serwera, po prostu chcę go zdobyć. Powyższe rozwiązanie działa dobrze, po prostu chcę to zrobić bez konieczności pisania/usuwania wartości. – Prisoner

+0

Miałem do czynienia z tym samym problemem i Wygląda na to, że potrzebujesz tylko obojętnego pola znacznika czasu, w którym umieścisz symbol zastępczy, a następnie odsłuchasz go, gdy serwer zmieni go na rzeczywisty znacznik czasu. Jeśli masz wielu użytkowników lub aplikacje z prośbą o to, musi być pole manekina dla każdego z nich, ponieważ mogą konkurować o jeden. – webduvet

Odpowiedz

6

można odzyskać czas serwera bez zapisywania go za pomocą .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

Jaka byłaby ta wartość podczas korzystania z interfejsu API REST? Zakładam https://xxxxx.firebaseio.com/.info/serverTimeOffset.json, ale to daje 'nieprawidłową ścieżkę' – Prisoner

+0

Niedostępne przez REST API, afaik. – Kato

+0

To właśnie wymyśliłem (używam usługi, aby automatycznie usuwać stare wpisy po 15 minutach w oparciu o czas serwera firebase). – Prisoner