ugrás a tartalomhoz

Javascript óra, de egy kicsit másképp

SySERR · 2010. Aug. 9. (H), 22.22
Csináltam egy rádió szerver vezérlő oldalt. Van benne AutoDJ, 2 féle szerver, meg minden földi jó. Erre szeretnék kitenni egy olyan órát ami mindig egy adott időtől kezd számolni. Azért szeretném így mert a user kliens órája sose jár halálpontosan a szerver órájával és a műsor a szerverről megy. A szerveren futó időt le tudom generálni a weboldalra, de ezt kéne beletenni egy java scriptbe amitől elkezd továbbszámolni (másodpercek miatt). Értelemszerűen jöhet más fajta ötlet is, de lehetőleg ne igényeljen komolyabb varázslást.
 
1

Több probléma

Poetro · 2010. Aug. 9. (H), 22.56
Bár nem írtad, miben, és hol akadtál el, egy probléma mindenesetre van az elgondolásoddal, mégpedig az, hogyan juttatod el a pontos időt a kliensnek. Ugyanis amikor te elküldöd a szerveren levő aktuális időt, és amíg megérkezik a klienshez, azon belül is a JavaScript-hez, addig azért eltelik egy kis idő, rosszabb esetben akár percekben is mérhető ez az eltérés.
Persze megfelelő szerver oldali segítséggel megoldható, de mindenesetre nem olyan egyszerű. Érdemes lehet megnézni NTP JavaScript-es implementációkat.
2

Viszonylag egyszeruen jut el.

SySERR · 2010. Aug. 9. (H), 23.14
Viszonylag egyszeruen jut el. Amikor betoltodik vagy frissul az oldal akkor benne van a html kodban a szerver ideje. Ezt akar a javascriptbe is belemehet (eleve ugy generalodik le maga a script is). Ehhez kene egy olyan javascript aminek ezt lehet megadni kiindulo idonek. max 2-3 masodperc lesz a varhato elteres ami boven jo. amit irtal NTPs megoldas az is jonak tunik, csak neha belefutok abba hogy pont akkor nem megy a timeszerver:). Ettol fuggetlenul ki fogom probalni.
3

egész negyszerű...

leone92s · 2010. Aug. 10. (K), 20.41
Üdv!
egy lehetséges megoldási alternatíva lehetne az, hogy egy rejtett divbe beleteszed a server időt, majd a div id-ját felhasználva kiveszed azt javascripttel, majd azt adod meg a dátum objektumnak.
pl.:
<div id="server_time" style="display: none">123456789</div>
majd a javascript:

var s_time = parseInt( document.getElementById("server_time").innerHTML );
var date = new Date( s_time );
ez persze csak egy próbálkozás, nem teszteltem, de szerintem ez egy jó megoldás, kb. annyi eltérés lesz a két idő között (mármint a tényleges szerver idő és a megjelenített idő) közt, amennyi idő alatt az oldal SZERKEZETE betöltődik (fontos a szerkezete szó, ugyanis a képeket ált. a böngészők később töltik le mint a DOM-ot, ezért azt már nem kell figyelembe venni ). Jah, ezek kb. századmásodpercnyi megoldások. esetleg ajax? Mondjuk ajaxxal még csak jquery-sen fonglalkoztam, de az is egy jó megoldás.

u.i.: ha a documentum legvégére (tehát közvetlenül a záró body tag elé) írod be a divet és a scriptet tartalmazó js-t, akkor eza különbség mégjobban csökkenthető (szerintem).

uuui.: mégmielőtt bárki is elkezd kioktatni, annak előre mondanám, hogy ez csak az én logikám, amiben lehetnek hibák.
4

Meglett a megoldas. Pont

SySERR · 2010. Aug. 23. (H), 14.50
Meglett a megoldas. Pont ugyanezt hasznalja a met.hu. Ennek a kodjat felhasznalva tokeletesen mukodik :)