El protocolo WebSocket es un protocolo que permite la comunicación bidireccional en aplicaciones web. Es un protocolo de capa de aplicación que está estrechamente relacionado con el protocolo HTTP, pero a diferencia de HTTP, WebSocket permite establecer una conexión persistente entre el cliente y el servidor para intercambiar datos en tiempo real sin la necesidad de iniciar repetidamente nuevas solicitudes HTTP.
Por lo general, cuando abrimos una página web, cada vez que hacemos clic en una opción de la página web, la interfaz enviará una solicitud HTTP y el sitio web devolverá una respuesta HTTP. Este método de solicitud activa por parte del cliente y respuesta del servidor cumple con los escenarios funcionales de la mayoría de las páginas web. Pero en este caso, el servidor no enviará mensajes activamente al cliente. Escenarios como los juegos web requieren que el cliente y el servidor se envíen activamente grandes cantidades de datos entre sí.
Por lo tanto, necesitamos un nuevo protocolo basado en TCP, el nuevo protocolo de capa de aplicación WebSocket.
referencia rápida:
Cómo establecer una conexión WebSocket?
La elección entre WebSocket y HTTP
Las principales características y principios de funcionamiento del protocolo WebSocket:
WebSocket es un protocolo de red para comunicación full-duplex a través de una única conexión TCP. Utiliza un protocolo de enlace similar a HTTP para establecer la conexión y luego utiliza una conexión persistente separada para la comunicación. Este enfoque permite a WebSocket comunicarse en tiempo real entre el navegador y el servidor sin la necesidad de enviar múltiples solicitudes HTTP para obtener datos. Esto significa que la conexión es persistente y permanece abierta hasta que una de las partes cierra activamente la conexión. Esto hace que WebSocket sea ideal para usar en aplicaciones en tiempo real, ya que no requiere el establecimiento y cierre constante de conexiones.
Normalmente se establece una conexión WebSocket entre un cliente (como un navegador) y un servidor. El cliente envía una solicitud HTTP para establecer la conexión y el servidor devuelve un mensaje de confirmación indicando que se ha establecido la conexión. Posteriormente, el cliente y el servidor pueden comunicarse bidireccionalmente a través de esta conexión. El cliente puede enviar mensajes al servidor y el servidor puede enviar mensajes al cliente. Los mensajes pueden ser matrices de bytes arbitrarias y pueden codificarse en cualquier formato.
WebSocket es una herramienta de comunicación cliente-servidor esencial, y es necesario comprender completamente su utilidad y evitar escenarios de uso para beneficiarse de su máximo potencial.
El uso más común es en el desarrollo de aplicaciones en tiempo real, donde ayuda a mostrar datos continuamente en el lado del cliente. Debido a que el servidor backend envía constantemente estos datos, WebSocket permite que estos datos se envíen o transfieran a través de una conexión abierta sin interrupción, lo que hace que dichas transferencias de datos sean más rápidas y aprovecha el rendimiento de su aplicación.
Los desarrolladores de aplicaciones de chat llaman a WebSocket para realizar intercambios puntuales, publicar, difundir mensajes, etc. Dado que se utiliza la misma conexión WebSocket para enviar o recibir mensajes, la comunicación es simple, liviana y rápida.
Mientras se desarrollan las aplicaciones de juegos, el servidor debe recibir datos continuamente sin necesidad de actualizar la interfaz de usuario. WebSocket logra este objetivo sin afectar la interfaz de usuario de la aplicación del juego.
A partir de los ejemplos anteriores, sabemos aproximadamente en qué circunstancias no es adecuado su uso, como cuando el ciclo de interacción de datos es muy largo, incluso una vez cada pocas horas, o cuando los datos solo necesitan procesarse una vez, el protocolo WebSocket no debería ser usado. En estos casos, utilizar el protocolo HTTP es una buena elección.
Dado que tanto HTTP como WebSocket se utilizan para la comunicación de aplicaciones, las personas a menudo se confunden y les resulta difícil elegir uno entre los dos.
WebSocket es un protocolo marco bidireccional. Por el contrario, HTTP es un protocolo unidireccional que opera sobre el protocolo TCP. Dado que el protocolo WebSocket admite la transferencia de datos ininterrumpida, se utiliza principalmente para el desarrollo de aplicaciones en tiempo real. HTTP no tiene estado y se utiliza para desarrollar aplicaciones RESTful y SOAP. SOAP todavía se puede implementar mediante HTTP, pero REST está ampliamente difundido y utilizado.
En WebSocket, la comunicación se produce en ambos extremos, lo que lo convierte en un protocolo más rápido. En HTTP, la conexión se establece en un extremo, lo que la hace un poco más lenta que WebSocket. WebSocket utiliza una conexión TCP unificada y requiere que una de las partes finalice la conexión. Hasta que esto suceda, la conexión permanece activa. HTTP requiere que se establezcan diferentes conexiones para solicitudes individuales. Una vez completada la solicitud, la conexión se desconecta automáticamente.
Hoy en día también hay más demandas en cuanto a la seguridad de los datos de la red. Las conexiones WebSocket utilizan conexiones TCP estándar, por lo que se pueden utilizar en cualquier red que admita TCP. Utiliza los prefijos de protocolo ws:// y wss://, que se pueden utilizar con cualquier nombre de dominio o dirección IP.
Las conexiones WebSocket se pueden cifrar y se puede utilizar el protocolo TLS (Transport Layer Security) para proteger la seguridad de los datos. Esta conexión cifrada utiliza el prefijo de protocolo wss://, que es diferente del prefijo de protocolo wss:// utilizado por las conexiones no cifradas. Además, WebSocket también admite el protocolo Secure Handshake, que permite la comunicación cifrada entre el navegador y el servidor. En general, WebSocket tiene alta seguridad y puede proteger la seguridad de los datos.
Además, cabe señalar que WebSocket no es un protocolo nuevo basado en HTTP, porque WebSocket solo usa HTTP al establecer una conexión y una vez completada la actualización, ya no tiene nada que ver con HTTP.
Las principales características y principios de funcionamiento del protocolo WebSocket:
1. Comunicación bidireccional:
WebSocket permite la comunicación bidireccional entre cliente y servidor. Una vez que se establece una conexión WebSocket, tanto el cliente como el servidor pueden enviarse datos entre sí en cualquier momento sin esperar solicitudes ni respuestas.
Una conexión WebSocket es persistente, no se desconecta después de cada comunicación. Esto reduce la sobrecarga de establecimiento y desconexión de la conexión, lo que hace que el intercambio de datos sea más eficiente y en tiempo real.
Debido a que las conexiones WebSocket son persistentes, los datos se transfieren inmediatamente sin demoras adicionales. Esto hace que WebSocket sea ideal para aplicaciones que requieren comunicación de baja latencia, como juegos en línea, chat en tiempo real y herramientas de colaboración.
4. Identificador de protocolo:
El protocolo WebSocket tiene su propio identificador de protocolo (ws:// o wss://), que se utiliza para identificar la conexión WebSocket. Por lo general, una conexión WebSocket se actualiza de una conexión HTTP a una conexión WebSocket mediante el mecanismo de actualización del protocolo HTTP.
El protocolo WebSocket utiliza tramas de datos para transmitir datos. Estos marcos de datos pueden contener texto, datos binarios u otros datos con formato personalizado. Los clientes y servidores pueden enviar y recibir tramas de datos según sea necesario.
A diferencia de la política del mismo origen, WebSocket permite la comunicación entre dominios. Esto permite a los clientes establecer conexiones WebSocket a servidores en diferentes dominios.
Para mayor seguridad, se puede utilizar WebSocket Secure (wss://) para cifrar la transmisión de datos, de forma similar a HTTPS. Esto es muy importante para transmitir información confidencial.
El protocolo WebSocket se utiliza ampliamente en muchas aplicaciones en tiempo real, incluidos juegos en línea, chat en tiempo real, herramientas de colaboración en línea, transmisión de datos del mercado financiero, etc. Su comunicación bidireccional y su baja latencia lo hacen ideal para procesar datos en tiempo real. En el desarrollo web, la API WebSocket se utiliza a menudo para implementar conexiones WebSocket y realizar comunicaciones WebSocket en el navegador.