[Algemeen] Client proces laten starten op Servertijd

Pagina: 1
Acties:

  • FRoSTy
  • Registratie: Oktober 2000
  • Laatst online: 16-08 19:54

FRoSTy

Jobbegea tot mie dea!

Topicstarter
Ik ben bezig met een veiling site en nou is het de bedoeling dat bij iedereen de veiling tegelijk gaat lopen. Ik heb al wat gevonden om de offset te berekenen tussen de server en client, dit gaat met behulp van pingtijden en zo. Dit zal dan waarschijnlijk gerealiseerd moeten worden door iets in java te programmeren en dit op de server te laten draaien en zo socketverbindingen te maken met de clients.

Afbeeldingslocatie: http://members.home.nl/frosty/berekening.jpg

De roundtrip delay (tijd heen & weer) kan als volgt berekend worden
Dr = (T4 - T1) - (T3 - T2)
waar de T's de server en clienttijden zijn

Vervolgens kan de offset (verschil in kloktijden tussen server en client) als volgt berekend worden
Coff = (T2 - T1 + T3 - T4) / 2

Alleen nou wil ik graag weten of hier misschien ook manieren voor zijn om dit compleet webbased te houden, zodat ik dus geen programma hoef te draaien op de server. Heeft iemand hier misschien een oplossing voor?

onbereikbaar.nl


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Euh, wat wil je precies?

Je wilt dat een veiling bij iedereen precies tegelijk begint? Dat is toch niet zo moeilijk met een webapp, gewoon de webapp laten kijken hoe laat het is. Indien het tijd is om te starten laat je de veiling zien bij een request, anders een of andere melding dat het nog geen tijd is.

Je hebt, volgens mij, helemaal niks van doen met de klok op de client... toch :?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Als alle clients binnen een domain draaien kun je sowieso al instellen dat ze dezelfde tijd hebben als de server. Als je webbased op het grote boze internet hangt heb je pech, clients achter een firewall kun je niet pingen, en je kunt hun niet naar jou laten pingen.

Professionele website nodig?


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

curry684 schreef op 21 February 2003 @ 11:15:
Als je webbased op het grote boze internet hangt heb je pech, clients achter een firewall kun je niet pingen, en je kunt hun niet naar jou laten pingen.

En ik zie niet in waarom het nodig is ;)

Sowieso zou je een java-applet de server kunnen laten pollen hoe laat die het vind, mocht het in een of andere applet moeten.

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Zoals ACM ook al zei: de server is de baas. Waarom zou je zo moeilijk gaan lopen doen om iets te bepalen dat elk moment weer anders kan zijn? Op het moment dat een veiling begint biedt de server de juiste mogelijkheden aan en niet eerder. Dat iemand met een snellere netwerkverbinding dat eerder kan zien is jammer voor de rest.

In jouw opzet ben je ook nog eens afhankelijk van een correcte instelling van de systeemklok op de client, iets waar je ook niet meteen vanuit mag gaan.

With the light in our eyes, it's hard to see.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

ACM schreef op 21 February 2003 @ 11:21:
En ik zie niet in waarom het nodig is ;)

Sowieso zou je een java-applet de server kunnen laten pollen hoe laat die het vind, mocht het in een of andere applet moeten.
Sja volgens mij bedoelt ie een proprietary veilingsysteem, niet iets dan 'open en bloot' op het internet zit. En je kunt op een webapp nooit garanderen dat de client tot op de tiende seconde dezelfde tijd heeft als de server.

(zelfs true NTP synchronisatie haalt die precisie niet gegarandeerd overigens)

Professionele website nodig?


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Ik heb het idee dat de topicstarter niet iets bedoeld als een eBay oid, maar meer een soort bloemenveiling. Er draait een soort klok rond, die bij elke rondgang de prijs verlaagd.
Als er iemand 'drukt' dan koopt hij het gene dat aangeboden wordt, voor de nu geldende prijs. Wie het eerste drukt is de eigenaar. Dus geen overbieden ed :)

Met dit in m'n kop denk ik dat je er een flinke dobber aan hebt om dit op het internet te gaan draaien. Je zult bij elke afwaardering elke client een signal moeten sturen, welke dit dan verwerken en je zult absoluut de client niets andere moeten laten verzenden dan 'ik wil het NU kopen, dat product'.
Nu ik het zo een beetje lees, denk ik dat je een boel hebt aan mechanismen die worden gebruikt in oa quake en UT enzo qua multiplayer. Dus misschien daar even onderzoek naar doen?

  • FRoSTy
  • Registratie: Oktober 2000
  • Laatst online: 16-08 19:54

FRoSTy

Jobbegea tot mie dea!

Topicstarter
ja het moet een soort bloemveiling id worden, de klok moet dus bij iedereen gelijk starten, dus als ik zeg over 10 seconden start de klok dan moet bij iedereen over 10 seconden de klok starten,
maar als ik nou dit verstuur naar de clients, dan komt dit bij iedereen op een ander tijdstip aan en zullen ze dus niet gelijk starten, daarom is het dus de bedoeling dat ik, de tijd dat het duurt voordat de client het bericht ontvangt, van de starttijd aftrek.
Dus bv als het 2 secs duurt voordat de client het ontvangt dat ie dan ipv over 10 secs start dan over 8 secs start.
Daarvoor heb je dus die berekeningen nodig die ik hierboven gepost heb, die maakt niet gebruik van pingtijden maar van kloktijden en berekend aan de hand daarvan hoelang het duurt voordat een client een bericht binnen krijgt.

Hier wordt het verhaal ook uitgelegd
www.eng.uci.edu/~klin/ec.ps

onbereikbaar.nl


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dat lijkt me niet altijd weken ivm firewalls en proxies bovendien is het zeer foutgevoellig. De ping tijden kunnen sterk veranderen.

We adore chaos because we like to restore order - M.C. Escher


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Met compleet webbased kan je trouwens nooit om het "server proggie" heen, simpelweg omdat je die synchronisatie nodig hebt.
Je zou kunnen proberen met javascript te knoeien, maar dit lijkt me meer werk voor een applet. Die kan over het algemeen prima met de server connecten (op een andere poort dan poort 80 evt) en dan simpelweg jouw synchronisatie algoritme uitvoeren waarna je server de tijd waarop iets moet plaatsvinden kan versturen.

Het is natuurlijk wel zo dat dataverkeer redelijk variabel in tijd is en er dus alsnog geen garantie geldt dat het precies tegelijk gebeurd, wel is de kans erop groter :)
Pagina: 1