Introducción
Abre una conexión WebSocket en tiempo real para recibir contenido, actualizaciones de pedidos y de usuarios sin necesidad de sondeo.
Más información sobre la interfaz de usuario del módulo https://doc.oneentry.cloud/docs/events/introduction
🎯 ¿Qué hace este módulo?
El módulo WS (WebSocket) te permite recibir notificaciones en tiempo real - actualizaciones de contenido, cambios en pedidos, acciones de usuarios - a través de una conexión persistente, de modo que el servidor te envía actualizaciones al instante en lugar de que tú las sondees. Esto habilita características en vivo como notificaciones, chat en vivo y paneles de control en tiempo real.
El único método, connect(), abre la conexión y devuelve un Socket de socket.io. Es síncrono y requiere un usuario autorizado, así que autentica primero.
🚀 Inicio Rápido
Inicializa el módulo desde defineOneEntry:
const { WS } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
connect() es síncrono y devuelve un Socket de socket.io (sin await). Adjunta controladores de eventos con socket.on(...):
// connect() requires an authorized user — authenticate first via AuthProvider.
const socket = WS.connect();
socket.on('connect', () => {
console.log('WebSocket connected');
});
// Listen for an event by its marker (configured in the Events module).
socket.on('my_event', (payload) => {
console.log('Update received!', payload);
});
✨ Conceptos Clave
¿Qué es WebSocket?
WebSocket es una conexión bidireccional persistente entre el cliente y el servidor:
- Conexión Persistente - Se mantiene abierta, sin apretón de manos repetidos
- Bidireccional - Tanto el cliente como el servidor pueden enviar mensajes
- En Tiempo Real - Entrega instantánea de mensajes
- Basado en Eventos - Escucha eventos con
socket.on(...) - Eficiente - Bajo consumo en comparación con el sondeo HTTP
WebSocket vs Sondeo HTTP
| Característica | WebSocket | Sondeo HTTP |
|---|---|---|
| Conexión | Persistente (se mantiene abierta) | Conexiones repetidas |
| Latencia | Menos de un segundo | Depende del intervalo (2-30s) |
| Eficiencia | Muy eficiente | Desperdiciador (muchas respuestas vacías) |
| Carga del Servidor | Baja (solo eventos) | Alta (solicitudes constantes) |
| Caso de Uso | Actualizaciones en tiempo real | Aceptable para actualizaciones no críticas |
Ciclo de Vida de la Conexión
1. Authenticate the user (AuthProvider.auth)
↓
2. Open the connection: const socket = WS.connect()
↓
3. Wait for the 'connect' event: socket.on('connect', ...)
↓
4. Listen for events: socket.on('<event_marker>', callback)
↓
5. Server pushes events as they occur
↓
6. Disconnect when done: socket.disconnect()
Qué eventos llegan a través de la conexión
No hay un catálogo fijo de nombres de eventos del SDK. Los eventos se activan de acuerdo con la configuración de tu módulo de Eventos en el panel de administración (el evento debe tener habilitada la opción WebSocket). Escuchas un evento por su marcador con socket.on('<event_marker>', callback).
La carga útil depende de la fuente del evento. Campos típicos de carga útil (ver connect() para ejemplos completos):
| Campo de carga útil | Llega para | Contiene |
|---|---|---|
attributes | Cada evento | Los propios atributos del evento |
product | Eventos del catálogo (producto) | Atributos del producto más title |
user | Eventos de formulario de usuario | Campos del formulario de usuario |
order | Eventos de pedidos | id del pedido y atributos |
email / code | Formularios de registro / código | Campos adicionales del formulario |
📋 Lo Que Necesitas Saber
Se requiere autorización
connect() requiere un usuario autorizado — llama a AuthProvider.auth(...) antes de conectar. La conexión se autentica con el token de acceso del usuario más tu token de aplicación de defineOneEntry(). Si no hay un usuario autorizado, el SDK registra un error.
connect() es síncrono
connect() devuelve un Socket de socket.io inmediatamente — no lo await. Espera el evento connect antes de confiar en el socket, luego adjunta controladores con socket.on(...).
Suscríbete después de que se abra la conexión, limpia cuando termines
Adjunta controladores de eventos después de que se active el evento connect, y deséchalos (socket.off) además de llamar a socket.disconnect() cuando la conexión ya no sea necesaria (por ejemplo, al desmontar el componente o al cerrar sesión del usuario) para prevenir fugas de memoria en SPAs.
Reconexión
socket.io se reconecta automáticamente por defecto. Para personalizar, escucha los eventos disconnect y connect_error y reconéctate con retroceso exponencial, reiniciando el retraso en una connect exitosa.
📊 Tabla de Referencia Rápida
| Método | Descripción | Caso de Uso |
|---|---|---|
| connect() 🔐 | Conectar al servidor WebSocket | Establecer conexión |
🔐
connect()requiere un usuario autorizado — autentica primero a través de AuthProvider. Después de conectar, adjunta controladores de eventos consocket.on(...).
❓ Preguntas Comunes (FAQ)
¿Cómo me conecto al servidor WebSocket?
Usa WS.connect() para abrir una conexión — es síncrono y devuelve un Socket de socket.io. Requiere un usuario autorizado, así que llama a AuthProvider.auth(...) primero. Espera el evento connect antes de confiar en el socket, luego adjunta controladores con socket.on('<event_marker>', callback).
¿A qué eventos puedo suscribirme?
No hay una lista fija de eventos del SDK. Los eventos se definen por la configuración de tu módulo de Eventos en el panel de administración (con la opción WebSocket habilitada), y escuchas un evento por su marcador con socket.on('<event_marker>', callback). Consulta connect() para ejemplos de carga útil (producto, usuario, pedido, formulario).
¿Cómo manejo las caídas de conexión?
socket.io se reconecta automáticamente por defecto. Para personalizar, escucha los eventos disconnect y connect_error y reconéctate con retroceso exponencial (por ejemplo, 1s, 2s, 4s, 8s, hasta un máximo), reiniciando el contador de retraso en una connect exitosa.
¿Cómo prevengo fugas de memoria con suscripciones WebSocket?
Desconecta los controladores de eventos (socket.off) y llama a socket.disconnect() cuando los componentes se desmonten o la conexión ya no sea necesaria. En React, haz esto en la limpieza de useEffect; en Vue, en beforeUnmount.
🎓 Mejores Prácticas
- Autentica primero -
connect()requiere un usuario autorizado. - No esperes a connect() - Es síncrono y devuelve un
Socket. - Suscríbete después de que se abra la conexión - Adjunta controladores después de que se active el evento
connect. - Limpia - Desconecta controladores (
socket.off) ysocket.disconnect()para prevenir fugas de memoria en SPAs. - Maneja la reconexión - socket.io se reconecta automáticamente; personaliza con
disconnect/connect_errory retroceso si es necesario. - Valida las cargas útiles de los eventos - La forma de la carga útil depende de la fuente del evento; verifica los campos antes de usarlos.
🔗 Documentación Relacionada
- Módulo AuthProvider - Autoriza al usuario antes de conectar
- Módulo de Pedidos - Eventos de pedidos para seguimiento de pedidos en tiempo real
- Módulo de Usuarios - Eventos de usuarios para notificaciones de registro
- API WebSocket