Peter: Webpage durch Klick eines anderen aktualisieren?

Hallo liebes Forum,

Gabi und Klaus sitzen an verschiedenen Orten und schauen sich die gleiche Webseite an.
Ist es grundsätzlich möglich, dass Gabi durch einen Klick die Seite von Klaus neu laden läßt, also aktualisiert? - Die eigene Seite soll sich natürlich auch neu laden.

Hintergrund:
Ich möchte gerne ein kleines Spiel per php programmieren. Es bringt mir aber natülich nichts, wenn der eine Spieler nicht sieht, was der andere Spieler macht... geschweige denn weiß, wann der andere mit seinem Zug fertig ist.

Vielen Dank für Eure Anregungen...

Gruß Peter

  1. Hi,

    Gabi und Klaus sitzen an verschiedenen Orten und schauen sich die gleiche Webseite an.
    Ist es grundsätzlich möglich, dass Gabi durch einen Klick die Seite von Klaus neu laden läßt, also aktualisiert? - Die eigene Seite soll sich natürlich auch neu laden.

    Hintergrund:
    Ich möchte gerne ein kleines Spiel per php programmieren. Es bringt mir aber natülich nichts, wenn der eine Spieler nicht sieht, was der andere Spieler macht... geschweige denn weiß, wann der andere mit seinem Zug fertig ist.

    direkt (ohne Einsatz weiterer Hilfsmittel) fiele mir da keine Möglichkeit ein.
    Da es aber kein wirklich seltenes Szenario ist, gibt es mehrere Ideen, wie man das Problem lösen kann:

    (a) in Intervallen beim Server nachfragen, ob neue Daten da sind (per AJAX z.B.) und dann, bei positiver Nachricht, neu laden (oder besser: direkt die neuen Daten laden und per JavaScript in die Seite laden)

    (b) nicht in Intervallen nachfragen, sondern per AJAX longpolling (auch Comet genannt) den AJAX-request solange offen (d.h. unbeantwortet) lassen, bis Daten da sind, und dann mit Beantwortung der Anfrage dem Anfragenden signalisieren, dass neue Daten da sind (weiter siehe a). Um auf Serverseite herauszufinden, ob neue Daten da sind, kann man natürlich auch regelmäßig die Datenbank befragen. Pseudocode:

    1. AJAX-Anfrage erhalten
    2. Solange noch keine neuen Daten in Datenbank vorhanden sind
      2.1 Schlafe für ein Intervall
    3. Gib neue Daten zurück

    Besser wird es, wenn man die unterschiedlichen PHP-Prozesse direkt miteinander reden lässt. Die unterschiedlichen Prozesse sind dabei einmal der wartende Prozess von Klaus und der Prozess von Gabi, welcher neue Daten generiert. Neben diversen IPC-Lösungen würde ich dabei auf etwas wie einen Nachrichtenbroker zugreifen, vielleicht gearman.

    (c) Die wohl hippste Lösung momentan (technisch auch am ausgereiftesten) wäre die Nutzung von Websockets. Da die Browserunterstützung noch nicht wirklich große Höhen erreicht hat, wohl in der Inkarnation von socket.io und node.js. Im Netz findest du diverse Chat-Beispiele, die dir eine Idee geben sollten, wie das funktioniert.

    Bis die Tage,
    Matti