Frage zu AJAX-Requests und generelle Frage

phips29

Gesperrt
16 Mai 2010
1.091
42
Hey,

möchte mal just4fun in den Ferien (Multiplayer-)Poker programmieren. Programmiersprache soll PHP sein, also Spiel dann über Browser spielbar :LOL:
Dazu noch AJAX damit man Seite nicht aktualisieren muss.

Nun hab ich eine Frage:
Wie macht man das? Also nicht falsch verstehen, kann schon seit ein paar Jahren programmieren, aber wenn zB ein User nach 20 Sekunden nichts tun, "folden" (also aussteigen) soll, wo programmiere ich das? Könnte ja in Javascript einfach 20 Sekunden Countdown machen und nach Ablauf dann per AJAX eben melden dass nächster Spieler an der Reihe sein soll, aber was ist wenn der Spieler den Browser schließt und daher nichts abgesendet wird? Wie (bzw. wo) programmiert man das dann?

Und noch ne Frage:
Da ich ja vorhabe das ganze mit AJAX zu aktualisieren, in welchen Zeitabstand ist dass dann sinnvoll? Jede halbe Sekunde ein Request? Oder ist das zu viel?

Freue mich schon auf eure Antworten :mrgreen:
 
[...] wo programmiere ich das?
Der Client ist böse! Grundsatz! Also muss du alles auf dem Server nachkontrollieren. Natürlich programmierst du auf Clientseite den 20s-Timer. Was aber, wenn der Client manipuliert oder - was dem gleichkommt und realistischer is - der Client einfach nur zu lahm is? Damit musst du rechnen.
Und noch ne Frage:
Da ich ja vorhabe das ganze mit AJAX zu aktualisieren, in welchen Zeitabstand ist dass dann sinnvoll? Jede halbe Sekunde ein Request? Oder ist das zu viel?
Kommt auf Client und Server an. Viele Requests bedeutet - je nachdem, was du alles tust - dass der Client viel CPU brennt bzw. kannst an Connection-Limits etc. stoßen. Viele Requests bedeuten auch entsprechend mehr Last auf dem Server.

Ggf. mal googlen nach HTML5 und Polling. Ich bin mir nicht sicher, wie ausgereift und implementiert das ganze is, aber da gibts Spezifikationen für Browser-Features, die da helfen könnten.
 
Kannst Dich auch mal in Node.js einarbeiten. Dann hat sich die Sache mit dem Pollen erledigt, da Du halt direkt zum Client pushen kannst.