WebSocket és una tecnologia que proporciona un canal de comunicació bidireccional i full-duplex sobre un únic socket TCP. Està dissenyada per a ser utilitzada en navegadors i servidors web, però pot usar-se per qualsevol aplicació client/servidor. L'API de WebSocket s'està normalitzant pel W3C, i el protocol WebSocket, a la vegada, s'està normalitzant per l'IETF. Normalment, per temes de seguretat, els administradors de xarxes bloquegen les connexions als ports diferents del port 80, així els WebSockets pretenen solucionar aquest problema, aportant una tecnologia que proporcioni una funcionalitat similar a la que s'obté obrint diferents connexions en diferents ports però multiplexant els diferents serveis a través d'un únic port TCP.
Prestacions
- Els websockets estan dissenyats per a emprar-se en els navegadors web i servidors web, però també es poden usar per a qualsevol aplicació client-servidor.
- El protocol WebSocket està basat en el protocol TCP.
- El número de port TCP és el 80 (o 443 en cas de comunicacions encriptades TLS), d'aquesta manera es pot passar a través de tallafocs que ho bloquegin tot menys els navegadors web.
- El protocol Websocket està suportat en la majoria dels navegadors entre aquests Google Chrome, Microsoft Edge, Internet Explorer, Firefox, Safari i Opera.
- El protocol WebSocket està definit en el document RFC 6455
Ús en aplicacions asíncrones
En aplicacions web modernes, WebSocket s'utilitza sovint per mantenir una connexió oberta entre el client i el servidor i permetre l'intercanvi de missatges en temps real. A diferència d'una petició HTTP convencional, en què el client envia una sol·licitud i el servidor retorna una resposta, una connexió WebSocket pot romandre activa durant més temps i permetre que qualsevol de les dues parts de la connexió enviï dades quan sigui necessari.
Aquest model és especialment útil en aplicacions basades en programació asíncrona, ja que el servidor pot gestionar moltes connexions obertes sense haver de crear necessàriament un fil d'execució per a cada client. En entorns basats en un bucle d'esdeveniments, les operacions de lectura i escriptura sobre la connexió es poden suspendre mentre no hi ha dades disponibles, i el servidor pot continuar atenent altres tasques. Això permet construir aplicacions concurrents amb un ús més eficient dels recursos.
WebSocket s'utilitza habitualment en xats, sistemes de notificacions, videojocs en línia, quadres de comandament amb actualització de dades en temps real i eines col·laboratives. En aquests casos, el servidor pot enviar informació al client sense esperar que aquest faci una nova petició HTTP. Això redueix la necessitat de tècniques com el sondeig periòdic, en què el client consulta repetidament el servidor encara que no hi hagi dades noves.
Tot i aquests avantatges, l'ús de WebSocket també requereix controlar correctament el cicle de vida de la connexió. El servidor ha de gestionar l'obertura, el tancament, els errors de xarxa i possibles clients que deixen de respondre. En marcs de treball asíncrons, aquesta gestió acostuma a integrar-se amb corutines o tasques que processen els missatges entrants i sortints sense bloquejar la resta de l'aplicació.
Enllaços externs
- «The WebSocket API - Editor's Draft» (en anglès). W3C, 26-07-2013. [Consulta: 4 setembre 2013].
