Sockets per Javascript
HTML-5-Dokumente bieten eine Schnittstelle [11], um Websockets mit Javascript zu nutzen. Um ein Websocket-Objekt in Javascript zu initialisieren, muss der Programmierer die Adresse des Websocket-Servers angegeben. Websocket-Server adressiert man mit URLs, anstelle des »http«
steht jedoch der Schemabezeichner »ws«
am Anfang, etwa in »ws://localhost:9000«
in Listing 6.
Listing 6
Nutzung von Websockets per Javascript
01 // Initialisiere Websocket-Objekt
02 var ws = new Websocket('ws://localhost:9000');
03 // Notiere Status des Websockets alle 5s
04 var oiv = setInterval(function() { console.log(ws.readyState) }, 5000);
05 // Sende lokale Zeit zum Server
06 ws.onopen = function() {
07 ws.send(time.toLocaleTimeString());
08 }
09 // Notiere Fehler
10 ws.onerror = function() {
11 console.log('Error!');
12 }
13 // Notiere eingehende Nachricht und schließe Verbindung
14 ws.onmessage = function(e) {
15 console.log(e.data);
16 ws.close(99, 'First message closes connection.');
17 }
18 // Beende Notation des Status
19 ws.onclose = function() {
20 clearInterval(oiv);
21 }
Ist die Websocket-Verbindung aufgebaut, kann der Entwickler Eventhandler nutzen. Der Javascript-Interpreter ruft sie beim Eintreten bestimmter Ereignisse auf: »onopen«
nach eröffneter Verbindung, »onerror«
bei einem Fehler, »onmessage«
, wenn ein Nachricht eingetroffen ist, und »onclose«
, wenn die Verbindung erfolgreich geschlossen wurde.
Zum Senden einer Nachricht dient die Methode »send()«
, die als Parameter die Nachricht entgegennimmt. Die Methode »close()«
beendet die Verbindung. Sie kann zwei optionale Parameter aufnehmen: einen numerischen Code sowie einen Text als Begründung für das Schließen der Verbindung. Das Websocket-Objekt besitzt zudem schreibgeschützte Attribute. So speichert »readyState«
den aktuellen Status der Verbindung (»CONNECTION: 0«
, »OPEN: 1«
, »CLOSING: 2«
, »CLOSED: 3«
), »bufferedAmount«
die Anzahl noch nicht versandter Bytes und »protocol«
die verwendete Version des Protokolls. Das Attribut »extension«
informiert über die vom Server vorgegebenen Erweiterungen.
Die Websockets sind in den Browsern Chrome 14+, Firefox 7+ und MSIE 10 am besten implementiert [12]. Für die Initialisierung eines Websocket-Objekts im Mozilla-Browser 7 und 8 ist bisher noch die Vorsilbe »Moz«
erforderlich. Die Funktion »websocket()«
in Listing 7 gleicht diese Ausnahme aus, indem sie im Fehlerfall die Initialisierung für den Mozilla-Browser ausprobiert.
Listing 7
Funktion websocket()
01 function websocket(url) {
02 try {
03 return new WebSocket(url);
04 } catch (e) {
05 try {
06 return new MozWebSocket(url);
07 } catch(e) {
08 return null;
09 }
10 }
11 }
Autobahn
Das Open-Source-Projekt Autobahn [13] bietet Bibliotheken zum Anlagen von Websocket-Clients für Jquery, Python und Android, daneben ein Python-Framework für Websocket-Server sowie eine Protokoll-Testsuite, die auch einen detaillierten Überblick über den Stand der Implementierung [14] von Websockets in Browsern gibt. Alle Quelltexte sind unter der Apache-2-Lizenz veröffentlicht. Das Server-Framework basiert auf Twisted [15], einer ereignisgesteuerten Netzwerkmaschine. Das Python-Framework Twisted macht es einfach, robuste Netzwerkanwendungen, beispielsweise Server, zu implementieren, und ist unter der MIT-Lizenz verfügbar.
Die Installation von Autobahn zusammen mit Twisted unter Ubuntu Linux 11.04 zeigt Listing 8. Websockets eignen sich gut für Serverdienste, auf die der Anwender per Webbrowser zugreift. Im Folgenden soll mit Hilfe von Autobahn und HTML 5 ein Dienst im Stil der Standard-Netzwerkdienste von Linux entstehen.
Listing 8
Installation von Autobahn
01 sudo apt-get install python-dev 02 sudo apt-get install python-setuptools 03 wget http://pypi.python.org/packages/2.7/a/autobahn/autobahn-0.4.2-py2.7.egg 04 sudo easy_install autobahn-0.4.2-py2.7.egg
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 6 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





