WebSockets - Moderne HTML5-Echtzeitanwendungen entwickeln

Peter Leo Gorski, Luigi Lo Iacono, Hoai Viet Nguyen

WebSockets

Moderne HTML5-Echtzeitanwendungen entwickeln

2015

281 Seiten

Format: PDF, Online Lesen

E-Book: €  34,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446444386

 

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