1UnitedPower: Kommunikation PHP <--> Browser

Beitrag lesen

Meine Herren!

Macht man das auch über AJAX?

Häufig macht man das über AJAX oder JSONP, es gibt da im Wesentlichen zwei Verfahren:

1. Der Browser schickt in regelmäßigen Zeitabständen Anfragen an den Server, der antwortet sofort mit den Änderungen, das ist das sogenannte Short-Polling.

2. Der Browser schickt eine Anfrage an den Server und der Server hält die Verbindung so lange offen, bis ein Ereignis eintritt und antwortet dann. Der Browser baut dann nach der Antwort (oder Timeout) die Verbindung erneut auf, das nennt sich dann respektive Long-Polling.

Diese Strategien sind sehr robust gegenüber Browser-Kompatibilität, haben aber auch ihre Schwächen, zum Beispiel ein hoher Transport-Overhead und ein vergleichsweise hoher Implementations-Aufwand auf der Client-Seite.

Mit Blick auf die neuere Browser-Generationen gibt es zweckmäßigere Möglichkeiten.

3. WebSockets – darauf bist du ja inzwischen selber gestoßen. Bei WebSockets wechseln Browser und Server auf ein anderes Kommunikations-Protokoll, das es erlaubt Nachrichten bidirektional und ohne viel Overhead auszutauschen. Die WebSocket-API arbeitet sehr stark Ereignis-orientiert und kann so den Implementations-Aufwand auf der Client-Seite drastisch senken. Auf der Serverseite (wenn PHP im Einsatz ist) wird es allerdings etwas komplizierter, aber auch dazu finden sich inzwischen viele Anleitungen im Netz.

4. Server Sent Events – Häufig ist es gar nicht notwendig, dass der Browser auch Nachrichten an den Server schicken muss, in diesen Fällen bieten sich SSEs an. Der Browser meldet sein Interesse an einem Ereignis-Feed des Servers an und wird nun immer benachrichtigt, wenn ein neues Ereignis, das von Interesse ist, eingetreten ist.

Beachte: Bei allen vier Strategien wird die Kommunikation vom Browser veranlasst, aber in den Fällen 3 und 4 gibt es echtes Server-Push-Verhalten, wohingegen 1 und 2 Polling-Verfahren sind.

Manche Anwendungen, zum Beispiel Chats, bedürfen nicht notwendiger Weise eine serverseitige Geschäftslogik, da reicht es aus, wenn Nachrichten von Client zu Client geschickt werden können. Für diesen Anwendungsfall gibt es WebRTC; dabei handelt es sich um einen Versuch, echtes Peer-2-Peer in den Browser zu bringen. Der WebServer dient in einem solchen Fall nur noch als Vermittler, der die Kommunikations-Partner miteinander bekannt macht.

--
“All right, then, I'll go to hell.” – Huck Finn