Koordinaten verschlüsselt übertragen

Ich verzweifel noch...
Ich habe versucht, keine Koordinaten zu übergeben und stattdessen vom Server mitrechnen zu lassen. Das Problem ist nur, dass der Ajax Request ja immer unterschiedlich lange dauert. Bekommt man die Request Zeit irgendwie raus also Serverseitig? (oder auch nur wieder Clientseitig)
 
Nein.
Und auch wenn, es besteht keine Garantie dass die Ajax.Geschwindigkeit mit der Anzeigegeschwindigkeit am Client zusammenpasst.

Vielleicht wäre es einmal hilfreich zu wissen, worum es überhaupt geht. Ist das zB. ein Spiel? Gegen Andere und dabei "cheaten" verhindern, oder allein und es geht um öffentliche Highscores, oder...?
 
Ja genau, es geht um ein Spiel gegen andere und darum zu verhindern - das man nicht ständig Treffer landet indem man die optimalen Koordinaten per Konsole übermittelt
 
Ich habe versucht, keine Koordinaten zu übergeben und stattdessen vom Server mitrechnen zu lassen.
Genau, das ist die Lösung!
Das Problem ist nur, dass der Ajax Request ja immer unterschiedlich lange dauert. Bekommt man die Request Zeit irgendwie raus also Serverseitig? (oder auch nur wieder Clientseitig)
Wo genau hast du dadurch Zeitprobleme?
Den Client kann du durchaus weiterrechnen lassen, bevor der Server ihn kickt. Die Anfragezeit kannst du wohl mit ein paar Testmessungen immer mal wieder im Durchschnitt berechnen.
 
Falls die Zeitprobleme der Serverlösung nicht lösbar sind bzw. zu ungenau sind, sind die Chancen wohl gleich 0. Eine wirklich gute Lösung gibt es einfach nicht, und alle irgendwie nützlichen sind in JS nicht möglich.

edit Comfreek: Dass das (bei Lösung der Zeitprobleme) die Lösung ist, war schon in Beitrag 2 :p :D
 
Ich habe jetzt das Mitrechnen probiert - leider ohne Erfolg.

ich übergebe dem Ajax den Date.getTimestamp() bei dem die Animation startet und im Ajax PHP File hole ich mir die microtime(true).

Die Differenz multipliziere ich dann mit den Pixeln.
Lokal habe ich nur eine Abweichung zwischen 3 und 10 Pixeln - auf dem Server allerdings bis zu 100.

Mach ich etwas falsch, oder funktioniert es einfach nicht?
 
Date.getTimestamp() liefert afaik Sekunden, nichts genaueres.

Lokal habe ich nur eine Abweichung zwischen 3 und 10 Pixeln - auf dem Server allerdings bis zu 100.
Wenn "lokal" "mit lokalem Webserver" bedeutet (der andere Server eben entfernt ist) und das akzeptabel funktioniert, könnte das noch was werden. Jetzt gehts, wie Comfreek auch schon sagt, noch um das Herausfiltern der Übertragungszeit.
Der Client muss, am Besten bevor das Spiel startet oder so, ein paar Ajax-Anfragen mit (Milli/MIkro)Timestamp machen, wobei der selbe Timestamp vom Server wieder unverändert zurückgesendet wird. Am Client dann (Jetzt-Empfangen)/2, und auch noch den Durchschnitt aller Anfragen, sollte eine ungefähre Übertragunszeit in eine Richtung geben. Wenn man bei jeder Anfrage außer der Ersten die aktuelle Schätzung mitschickt kann der Server nebenbei auch ermitteln, wie versetzt die Uhren von Server und Client sind (und das auch jedesmal als zweiten Antwortteil dazupacken, dann weiß es der Client auch).

Mit Wissen von Pingzeit und Uhrenversetzung sollte es dann möglich sein, die Berechnungen ähnlicher zu machen.
Trotzdem aber nicht vergessen, dass die Anfragen am Kabel noch immer reale Zeit benötigen, egal ob rausrechenbar oder nicht, und auch dass die Pingzeit stark variieren kann.
 
Vielen vielen Dank euch nochmals, es sieht nun sehr gut aus.

Gibt es noch eine Möglichkeit Last auf dem Server zu simulieren?
Reicht es im von Ajax aufgerufenen PHP File an erster Stelle ein sleep zu setzen?
 
Zurück