¿Qué es WebSocket?
WebSocket es un protocolo que permite la comunicación bidireccional en tiempo real entre cliente y servidor. Se utiliza en aplicaciones que requieren inmediatez, como aplicaciones de chat, juegos en línea y visualización de cotizaciones bursátiles.
URL de WebSocket: Se utilizan
ws://(sin cifrar) ywss://(cifrado con TLS).
Diferencias entre HTTP y WebSocket
| Característica | HTTP | WebSocket |
|---|---|---|
| Dirección de comunicación | Cliente→Servidor | Bidireccional |
| Conexión | Conectar/desconectar por cada solicitud | Persistente |
| Server Push | No disponible | Disponible |
| Overhead | Enviar encabezados HTTP cada vez | Solo en la primera vez |
| Tiempo real | Bajo | Alto |
Handshake de WebSocket
# Solicitud del cliente
GET /chat HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
# Respuesta del servidor
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Ejemplo de Implementación en JavaScript
const socket = new WebSocket('wss://example.com/chat');
socket.addEventListener('open', (event) => {
console.log('Conexión exitosa');
socket.send('Hello Server!');
});
socket.addEventListener('message', (event) => {
console.log('Recibido:', event.data);
});
Socket.IO
Socket.IO es una biblioteca de alto nivel basada en WebSocket.
- Fallback: Si WebSocket no está disponible, utiliza HTTP long polling
- Reconexión automática: Se reconecta automáticamente en caso de desconexión
- Función Room: Agrupa clientes
Resumen
WebSocket es un protocolo poderoso que permite la comunicación bidireccional en tiempo real. Es importante comprender las diferencias de características con HTTP y seleccionar e implementar apropiadamente según los requisitos de la aplicación.
← Volver a la lista