Polaris Systems Neuigkeiten

Funktionsweise von WebSockets

Für das Einsetzen von WebSockets benötigt man einen Server. In PHP können die internen Funktionen für WebSockets genutzt werden. Mittels PHP kann also der Socket und alle nötigen Funktionen serverseitig eingerichtet werden. Mit socket_bind wird dem Socket eine Adresse und ein Port zugewiesen. Socket_listen wartet auf eingehende Verbindungen, also Anfragen vom Client. Wird eine Anfrage an den ServerSocket gestellt, so wird mittels socket_accept ein neuer ClientSocket erstellt. Lesender Zugriff ist auf den ClientSockets mittels socket_recv möglich, schreibender Zugriff ist dagegen über die Funktion socket_write möglich.

Auf der Clientseite kann man nun mittels Javascript auf den Server Socket zugreifen. In HTML 5 ist dafür eine Web Socket Klasse vorgesehen. Der Socket Wert kann auf Clientseite vier verschiedene Stati annehmen:

  • Connecting: Die Verbindung wird aufgebaut.
  • Open: Der Verbindungsaufbau war erfolgreich und der Datenaustausch kann beginnen.
  • Closing: Die Verbindung wird geschlossen.
  • Closed: Die Verbindung ist geschlossen.

Es gibt 4 Ereignisse welche durch ein WebSocket ausgelöst werden können. Mittels Javascript kann auf diese Ereignisse entsprechend reagiert werden. Die 4 Ereignisse lauten wie folgt:

 

  • onopen(): Dieser Event wird nach dem Aufbauen einer Verbindung aufgerufen. Wurde es erfolgreich ausgelöst, so ist ein Senden mittels der socket.send - Methode möglich.
  • Onmessage(msg): Dieser Event wird aufgerufen, wenn eine Nachricht vom Server an den verbundenen Client gesendet wird. Der Parameter, der an die aufgerufene Funktion übergeben wird, ist ein Objekt vom Typ MessageEvent. Dieser MessageEvent hat ein Attribut data, in dem die Nachricht enthalten ist.
  • onerror(error): Diese Methode wird beim Auftreten von Verbindungsabbrüchen oder sonstigen Fehlern aufgerufen.
  • onclose():Verbindung wird von Server- oder Clientseite geschlossen.

Mit WebSockets gibt es nun eine standardisierte und Ressourcensparende Lösung zur bidirekektionalen Kommunikation von Webanwendungen.

Zurück