Peter Leo Gorski, Luigi Lo Iacono, Hoai Viet Nguyen
WebSockets
Moderne HTML5-Echtzeitanwendungen entwickeln
Inhalt
7
Vorwort
11
Danksagung
13
1 Einleitung
15
1.1 Wie ist das Buch strukturiert?
17
1.2 Wer sollte das Buch lesen?
17
1.3 Wie sollte mit dem Buch gearbeitet werden?
18
2 HTTP: Hypertext Transfer Protocol
19
2.1 Grundlegendes
19
2.1.1 ISO/OSI-Referenzmodell für Kommunikationssysteme
20
2.1.2 Vereinfachtes OSI-Modell
22
2.1.3 Dienst
23
2.1.4 Protokoll
24
2.1.5 Kommunikationsfluss
25
2.2 HTTP en détail
27
2.2.1 Kommunikationsablauf
27
2.2.2 Textbasiert
28
2.2.3 Aufbau von Request-Nachrichten und Protokollelemente
30
2.2.4 Aufbau von Response-Nachrichten und Statuscodes
34
2.2.5 Zustandslos
38
3 Höhere Interaktivität und Echtzeitfähigkeit
39
3.1 XMLHttpRequest (XHR)
39
3.2 Polling
41
3.3 Long-Polling
42
3.4 Comet
43
3.5 Server-Sent Events
45
3.6 Bewertung der Verfahren
47
4 Die Leitung: Das IETF WebSocket-Protokoll
49
4.1 Was bisher geschah
49
4.2 Opening-Handshake – WebSocket-Verbindung aufbauen
50
4.3 WebSocket-Frames
53
4.4 Fragmentierung
56
4.5 Maskierung
57
4.6 Datenframes
59
4.6.1 Frames mit Textdaten
59
4.6.2 Frames mit Binärdaten
61
4.7 Control-Frames
62
4.7.1 Ping-Frame
62
4.7.2 Pong-Frame
63
4.7.3 Close-Frame
63
4.8 Closing-Handshake – WebSocket-Verbindung schließen
67
4.9 Tools zur Protokollanalyse
68
4.9.1 Wireshark
68
4.9.2 Fiddler
74
4.9.3 Chrome Developer Tools
82
4.9.4 Chrome Network Internals
84
5 Der Client: Die W3C WebSocket-API
89
5.1 Was bisher geschah
89
5.2 Browserunterstützung
90
5.3 Namensschema
93
5.4 Objekterzeugung und Verbindungsaufbau
94
5.5 Zustände
95
5.6 Event-Handler
97
5.7 Erstes vollständiges Progrämmchen
100
5.8 Attribute
103
5.9 Datenübertragung
106
5.9.1 Übertragung textbasierter Daten
107
5.9.2 Übertragung binärer Daten
108
5.10 Verbindungsabbau
110
5.10.1 Verbindung beenden
110
5.10.2 Close-Event
110
5.11 Ausblick: HTTP 2.0/SPDY
111
6 Der Server: Sprachliche Vielfalt
115
6.1 Übersicht verfügbarer WebSocket-Implementierungen
115
6.2 Node.js
116
6.2.1 Installation von Node.js
118
6.2.2 WebSocket.io
120
6.2.3 Socket.io
123
6.2.4 WebSocket-Node
127
6.3 Vert.x
133
6.4 Play Framework
136
6.4.1 Installation
136
6.4.2 Anlegen eines neuen Play-Projekts
137
6.4.3 Anatomie einer Play-Anwendung
137
6.4.4 Die Play-Konsole
138
6.4.5 Controller in Play
138
6.4.6 Views in Play
139
6.4.7 Routes in Play
140
6.4.8 Vom Controller zur View
141
6.4.9 Erstellen eines Echo-Servers in Play
143
6.5 JSR 356
146
6.5.1 JSR 356-basierender WebSocket-Server
150
6.5.2 JSR 356-basierender WebSocket-Client
154
7 WebSockets in der Praxis
161
7.1 Performance und Skalierbarkeit
161
7.1.1 Test-Echo-Server
162
7.1.2 Testclient für die Auslastung
165
7.1.3 Testclient für die Zeitmessung
166
7.1.4 Einrichtung der Testumgebung
167
7.1.5 Ergebnisse
171
7.2 Sicherheit
172
7.2.1 Same Origin Policy
172
7.2.2 Vertrauliche Kommunikation
173
7.2.3 Authentifizierung
176
7.2.4 Firewalls und Proxys
197
7.2.5 Mögliche Gefährdungen
200
7.2.6 Bewertung der Sicherheitslage
209
7.3 Mit Haken und Ösen
210
7.3.1 Pings und Pongs
210
7.3.2 Das Cache-Problem im Internet Explorer 10
211
8 Beispielanwendungen
215
8.1 Fernbedienung von Webanwendungen mit einer Smartphone-/Tablet-Fernbedienung
216
8.2 Chat-System
225
8.3 Heatmap für Usability-Tests
230
8.4 Überwachungskamera per Webcam
235
Schlusswort
245
A XHR-Objekt
247
B Chrome Developer Tools auf Android
249
C Umgebungsvariablen definieren
255
C.1 Mac OS/Linux mit Bash
255
C.2 Windows
256
D Express.js
261
D.1 Anatomie einer Express.js-Anwendung
262
D.2 Die Anwendungslogik in der Datei app.js
264
D.3 Die Jade-Template-Engine
266
D.4 Express.js mit WebSocket-Servern verbinden
268
Literatur
271
Stichwortverzeichnis
277
© 2009-2024 ciando GmbH