WebSockets se blíží spíše obecnému TCP spojení. Po navázání spojení, kdy se vymění hlavičky podobné těm v HTTP, je ve WebSockets k dispozici duplexní trvalé spojení, po kterém lze posílat libovolná data. Zaslání dat serverem vyvolá událost, kterou lze obsloužit v JS. Je to ideální pro AJAX/AJAJ aplikace – nemusí se pořád navazovat nová spojení a přenášet HTTP hlavičky.
souhlas, ale asi by ve zprávičce mělo být „mnohem efektivněji než přes prosté HTTP“, protože takhle to vypadá, jako by WS na HTTP nestavěly.
BTW: koncept je to zajímavý, možná by to šlo použít i mimo web – už kdysi jsem uvažoval o tom, že by byla fajn nějaká vrstva pro abstrakci nad TCP – spojení by se mohlo obnovit (např. po probuzení počítače ze spánku nebo po přechodu do jiné sítě) a aplikace by nic nepoznala, jen by do té doby byl pozastavený přenos dat.
takhle to vypadá, jako by WS na HTTP nestavěly
Také na něm nestaví, je to úplně jiný protokol, viz http://www.whatwg.org/specs/web-socket-protocol/
no jo, zmátlo mne, že požadavek začíná:
GET /demo HTTP/1.1 Host: example.com
a odpověď:
HTTP/1.1 101 WebSocket Protocol Handshake Upgrade: WebSocket
ono se to tváří jako HTTP, ale není. :-) Docela chyták.
Ale už čtu specifikaci:
The WebSocket protocol is an independent TCP-based protocol. Its only relationship to HTTP is that its handshake is interpreted by HTTP servers as an Upgrade request.
BTW: nebylo by čistější kdyby tam místo HTTP/1.1 (což znamená protokol/verze) bylo něco jako WS/1.0, když je to jiný protokol?
To by bylo v rozporu s HTTP specifikací http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.42
WebSockets jsou záměrně navrženy tak, aby je šlo iniciovat přes HTTP Upgrade, a šlo je tak snadno používat přes stávající infrastrukturu HTTP – webové servery, proxy servery, firewally, …