WebSockets - Moderne HTML5-Echtzeitanwendungen entwickeln
von: Peter Leo Gorski, Luigi Lo Iacono, Hoai Viet Nguyen
Carl Hanser Fachbuchverlag, 2015
ISBN: 9783446444386
Sprache: Deutsch
281 Seiten, Download: 40053 KB
Format: PDF, auch als Online-Lesen
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 |