close
Vés al contingut

WebSocket

De la Viquipèdia, l'enciclopèdia lliure
BERJAYAWebSocket
BERJAYA Modifica el valor a Wikidata

Tipusprotocol de comunicació
Versió estable4.1.0 / Juny del 2008
LlicènciaCodi obert RFC6455
Característiques tècniques
Sistema operatiuMultiplataforma
Equip
Creador/sMichael Carter
Desenvolupador(s)W3C
Més informació
Lloc webwebsocket.org
Stack ExchangeEtiqueta Modifica el valor a Wikidata

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.[1][2][3]

Prestacions

[modifica]
  • 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[4]

Ús en aplicacions asíncrones

[modifica]

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ó.[5][6]

Vegeu també

[modifica]

Notes

[modifica]
  1. «WebSockets» (en anglès). https://developer.mozilla.org.[Consulta: 28 juny 2017].
  2. Kaazing. «websocket.org - Powered by Kaazing» (en anglès). https://www.websocket.org. Arxivat de l'original el 2018-09-16. [Consulta: 28 juny 2017].
  3. «Introducción a los WebSockets: incorporación de sockets a la Web - HTML5 Rocks» (en anglès). HTML5 Rocks - Un recurso para desarrolladores de HTML5 para una Web abierta, 28-06-2017.
  4. <ifette+ietf@google.com>, Ian Fette. «The WebSocket Protocol» (en anglès). https://tools.ietf.org.[Consulta: 29 juny 2017].
  5. «The WebSocket API». MDN Web Docs. [Consulta: 23 maig 2026].
  6. Fowler, Matthew. Python Concurrency with asyncio. Manning Publications, 2022, p. 231-234. ISBN 9781617298660.

Enllaços externs

[modifica]