Tutorial: WebSockets mit JavaScript und PHP – Teil 1: Grundlagen und das Interface

Dies ist der erste Teil einer neuen Artikel-Serie rund um WebSockets. Im ersten Teil möchte ich euch die Grundlagen von WebSockets näher bringen. Die nächsten Teile handeln von der Implementierung mit JavaScript und PHP.


wpSEO optimiert Blogs für Suchmaschinen - automatisch und effizient.

Was sind WebSockets?

WebSockets ist ein Netzwerkprotokoll, welches mit HTML5 eingeführt wurde und momentan nur von Google Chrome unterstützt wird. Es dient dazu die Kommunikation zwischen einem Client und dem Server in einem Webbrowser zu optimieren.

Bisher mussten Antworten vom Server immer vom Client gefordert werden (Pull-Technologie). Mit WebSockets ist es nun Möglich eine bidirektionale Verbindung zwischen Client und Server herzustellen, sodass der Server jederzeit Nachrichten an den Client senden kann (Push-Technologie).

Es gibt zwar schon zahlreiche Möglichkeiten die Funktionalität eines WebSockets nachzuahmen (Bsp.: AJAX-Longpolling), jedoch bringen diese Hacks immer einen gewissen Overhead durch das HTTP-Protokoll mit sich. WebSockets besitzen diesen Nachteil nicht.

Das WebSocket-Interface

Werfen wir einen Blick auf das WebSocket-Interface:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[Constructor(in DOMString url, in optional DOMString protocol)]
interface WebSocket {
    readonly attribute DOMString URL;
 
    // ready state
    const unsigned short CONNECTING = 0;
    const unsigned short OPEN = 1;
    const unsigned short CLOSING = 2;
    const unsigned short CLOSED = 3;
    readonly attribute unsigned short readyState;
    readonly attribute unsigned long bufferedAmount;
 
    // networking
    attribute Function onopen;
    attribute Function onmessage;
    attribute Function onerror;
    attribute Function onclose;
    boolean send(in DOMString data);
    void close();
};
WebSocket implements EventTarget;

Eigenschaften

  • readyState – Status der Verbindung (0=connecting, 1=open, 2=closing, 3=closed)
  • bufferedAmountBytes, die in der Warteschlange stehen

Methoden

  • send – eine Nachricht an den Server senden
  • close – die Verbindung schließen

Event-Handler:

  • onopen – bei Öffnen der Verbindung
  • onmessage – bei Empfangen einer Nachricht
  • onerror – bei Auftreten eines Fehlers
  • onclose – bei Schließen der Verbindung

Ausblick

Mit dem Wissen über dieses Interface seid ihr bestens gerüstet für die nächsten Teile dieser Artikel-Serie, in denen wir eine vollständige Implementierung von WebSockets mit JavaScript und PHP erarbeiten und diese auf eine funktionsfähige Chat-Anwendung erweitern.


Tags: , , , , , , , , , , , , ,

RSS

Dir hat der Artikel gefallen?
Dann abonniere den Blog-Feed!

Kommentare (8)

  1. PHP Gangsta sagt:

    Bin schon gespannt, gute Idee das Thema mal ausführlicher zu behandeln, auch wenn es noch Monate dauert bis es final und verbreitet ist. Aber für interaktive Webseiten wird es ein “must-have” sein denk ich. Firefox wird es mit dem Release von 3.7 rausbringen.

  2. Lukas sagt:

    Für alle, die es gern out of the box haben, die Arbeit hat sich schon jemand gemacht:
    http://mylittlehacks.appspot.com/phpwebsocket
    ein funktionierender Websocket-Server in PHP inklusive einfachem Chatbot. Die Demo zu einem multiuser-chat auszubauen dürfte recht einfach sein.

    Was ich an Websockets sehr toll fand: es ist überraschend einfach! Der Javascript-Teil, der benötig wird um mit Websockets zu arbeiten ist fast schon unverschämt kurz (4 Zeilen) und sehr logisch zu verwenden. Eine Technologie, die unbedingt so schnell wie möglich in alle Browser kommen sollte!

  3. pehbehbeh sagt:

    Hey Lukas,
    auf die vorhandenen Libraries werde ich im nächsten Teil eingehen. Das Tutorial werde ich darauf aufbauen.

    Die Einfachheit ist wirklich genial. Hoffen wir, dass diese geniale Technologie möglichst schnell massentauglich wird…

  4. Lukas sagt:

    ach, sorry ich wollte dir nicht vorgreifen :-)
    ein Artikel, den ich neulich irgendwo gelesen habe (weiß leider nichtmehr wo) meinte, dass es wohl in der nächsten Zeit so sein wird, dass für Browser, die Websockets nicht unterstützen, eine langsame Fallback-Variante (Long polling, never ending iframes o.ä.) zur Verfügung stehen wird. Wenn das so in Javascript Frameworks Einzug hält, wäre die ganze Push-Geschichte langsam wirklich attraktiv – denn für den intensiven Einsatz sind die bisherigen Krücken halt doch zu langsam/unperformant, als Fallback hingegen würds ja reichen… mir kribbelts schon in den Fingern, damit was tolles zu machen!

  5. Daniel sagt:

    Interessanter Artikel, ich würde mich sehr über eine Fortsetzung über dieses Thema freuen :) So viele gute Artikel gibt es jedenfalls noch nicht dazu – noch weniger deutschsprachige *grins*.

  6. kst3000 sagt:

    … und wie geht’s weiter? Bin gespannt! :)

  7. pehbehbeh sagt:

    Ich habe aufgrund eines Projektes momentan nur extrem wenig Zeit zum schreiben.

    Aber es wird bald weitergehen!

  8. martinkoell sagt:

    echt geil, danke dass du hier diesen thread gestartet hast.
    die technologie wird sich durchsetzen und es ist schön, wenn eifrige entwickler vorlegen :)

Kommentar schreiben

(benötigt)

(benötigt)

Ping-/Trackbacks (2)

  1. [...] Dieser Eintrag wurde auf Twitter von Phil erwähnt. Phil sagte: #Tutorial: #WebSockets mit #JavaScript und #PHP – Teil 1: Grundlagen und das Interface http://ow.ly/1Djgy [...]