El protocolo WebSocket permite que una solicitud HTTP normal se actualice a una conexión de socket persistente que luego permite la comunicación bidireccional con una sobrecarga muy baja.
Los enchufes han existido desde siempre y son efectivos para permitir la comunicación en tiempo real desde ambos lados del receptáculo. Sin embargo, HTTP es un protocolo que no está diseñado para la comunicación en tiempo real y, en cambio, cada solicitud es efectivamente sin estado. HTTP 1.1 permite que se comparta una única conexión entre múltiples solicitudes, ahorrando así la sobrecarga de establecer una conexión para cada solicitud, sin embargo, no proporciona un mecanismo estándar para que el receptor envíe datos en tiempo real al cliente, o el cliente envíe datos al servidor sin iniciar una nueva solicitud HTTP.
Antes de WebSockets, las personas usaban una serie de estrategias para lograr una conexión pseudo persistente con un servidor como:
- ¿Ha cambiado la reputación del Reino Unido en el mundo debido al Brexit?
- Cómo ejecutar una función si sé su dirección
- ¿Cuál es la diferencia entre algoritmos y heurística?
- ¿Cómo es AIT, Pune para CSE? ¿Cómo es la multitud, la cultura de codificación y las ubicaciones para CSE allí? ¿Cómo son las instalaciones del albergue? Con 20,000 rango aéreo, ¿vale la pena ir?
- ¿Qué es el shellcode?
- Sondeo largo XHR: mantenga una conexión abierta esperando una respuesta, una vez que el servidor está listo para enviar datos, envía datos, cierra la conexión y se realiza una nueva conexión nuevamente esperando datos
- Transmisión XHR: un poco como un sondeo largo, excepto que cada fragmento de datos está enmarcado y la conexión puede permanecer abierta después de enviar los datos.
- JSONP: probablemente la peor solución, pero sin duda la más amplia admitida, un poco como un sondeo largo de XHR, excepto que el navegador no puede usar un cliente para detectar si la solicitud ha tenido éxito o no. En cambio, cuando el servidor está listo para enviar datos, lo envía envuelto como un Javascript que a su vez invoca una función con la carga útil de datos.
En Ably, una plataforma de mensajería en tiempo real, admitimos WebSockets como un transporte de primera clase, ya que creemos que es el transporte más utilizado y eficiente disponible en la actualidad. Sin embargo, recurrimos a XHR y JSONP en navegadores antiguos o entornos restrictivos.
Si está interesado en cómo se ve una actualización de WebSocket a nivel HTTP, puede ver un ejemplo simple de solicitud de actualización de StackOverflow a continuación:
OBTENER /? Codificación = texto HTTP / 1.1 Origen: http://www.websocket.org Conexión: actualización Anfitrión: echo.websocket.org Sec-WebSocket-Key: P7Kp2hTLNRPFMGLxPV47eQ == Actualización: websocketSec-WebSocket-Version: 13