WebSocket: provařené i méně známé partie

WebSocket

Provařené i méně známé partie

Ondřej Žára, @0ndras

O čem to bude?

Přehled technologie WebSocket

Technologie WebSocket

Hlavní atributy

Klientské API

Klientské API

Klientské API – ukázka

var socket = new WebSocket("ws://server.cz/"); socket.addEventListener("open", /* ... */); socket.addEventListener("message", /* ... */); socket.addEventListener("close", /* ... */); socket.send(data); socket.close();

Klientské API – ostatní

Komunikace, server

Komunikace se serverem

Komunikace se serverem – handshake

GET /chat HTTP/1.1 Host: server.example.com Connection: Upgrade Upgrade: websocket Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: http://example.com Sec-WebSocket-Version: 13

Komunikace se serverem – odpověď

HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Protokoly

Serverové API

Binární protokol

Binární protokol

Binární protokol – Framing

Binární protokol – Framing

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-------+-+-------------+-------------------------------+ |F|R|R|R| opcode|M| Payload len | Extended payload length | |I|S|S|S| (4) |A| (7) | (16/64) | |N|V|V|V| |S| | (if payload len==126/127) | | |1|2|3| |K| | | +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + | Extended payload length continued, if payload len == 127 | + - - - - - - - - - - - - - - - +-------------------------------+ | |Masking-key, if MASK set to 1 | +-------------------------------+-------------------------------+ | Masking-key (continued) | Payload Data | +-------------------------------- - - - - - - - - - - - - - - - + : Payload Data continued ... : + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Payload Data continued ... | +---------------------------------------------------------------+

Binární protokol – Rámec

Binární protokol – Maskování

Binární protokol – Opcodes

Potenciál využití

Náhrada existujícího řešení

Signalling

Prostor pro otázky