Introdução
Abra uma conexão WebSocket em tempo real para receber atualizações de conteúdo, pedidos e usuários sem polling.
Mais informações sobre a interface do usuário do módulo https://doc.oneentry.cloud/docs/events/introduction
🎯 O que este módulo faz?
O módulo WS (WebSocket) permite que você receba notificações em tempo real - atualizações de conteúdo, mudanças de pedidos, ações de usuários - através de uma conexão persistente, assim o servidor envia atualizações para você instantaneamente em vez de você fazer polling por elas. Isso possibilita recursos ao vivo como notificações, chat ao vivo e painéis em tempo real.
O único método, connect(), abre a conexão e retorna um Socket do socket.io. É síncrono e requer um usuário autorizado, então autentique primeiro.
🚀 Início Rápido
Inicialize o módulo a partir de defineOneEntry:
const { WS } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
connect() é síncrono e retorna um Socket do socket.io (sem await). Anexe manipuladores de eventos com 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);
});
✨ Conceitos Chave
O que é WebSocket?
WebSocket é uma conexão bidirecional persistente entre cliente e servidor:
- Conexão Persistente - Permanece aberta, sem handshakes repetidos
- Bidirecional - Tanto o cliente quanto o servidor podem enviar mensagens
- Em Tempo Real - Entrega instantânea de mensagens
- Baseado em Eventos - Escute eventos com
socket.on(...) - Eficiente - Baixo overhead em comparação ao polling HTTP
WebSocket vs Polling HTTP
| Recurso | WebSocket | Polling HTTP |
|---|---|---|
| Conexão | Persistente (permanece aberta) | Conexões repetidas |
| Latência | Sub-segundo | Depende do intervalo (2-30s) |
| Eficiência | Muito eficiente | Desperdiçador (muitas respostas vazias) |
| Carga do Servidor | Baixa (apenas eventos) | Alta (requisições constantes) |
| Caso de Uso | Atualizações em tempo real | Aceitável para atualizações não críticas |
Ciclo de Vida da Conexão
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()
Quais eventos chegam pela conexão
Não há um catálogo fixo de nomes de eventos do SDK. Os eventos são acionados de acordo com a configuração do seu módulo de Eventos no painel de administração (o evento deve ter a opção WebSocket habilitada). Você escuta um evento pelo seu marcador com socket.on('<event_marker>', callback).
A carga útil depende da fonte do evento. Campos típicos da carga útil (veja connect() para exemplos completos):
| Campo da carga útil | Chega para | Contém |
|---|---|---|
attributes | Todo evento | Os próprios atributos do evento |
product | Eventos do catálogo (produto) | Atributos do produto mais title |
user | Eventos de formulário de usuário | Campos do formulário de usuário |
order | Eventos de pedidos | id do pedido e atributos |
email / code | Formulários de registro / código | Campos adicionais do formulário |
📋 O que você precisa saber
Autorização é necessária
connect() requer um usuário autorizado — chame AuthProvider.auth(...) antes de conectar. A conexão é autenticada com o token de acesso do usuário mais seu token de aplicativo de defineOneEntry(). Se nenhum usuário estiver autorizado, o SDK registra um erro.
connect() é síncrono
connect() retorna um Socket do socket.io imediatamente — não faça await nele. Aguarde o evento connect antes de confiar no socket, então anexe manipuladores com socket.on(...).
Inscreva-se após a conexão abrir, limpe quando terminar
Anexe manipuladores de eventos após o evento connect ser acionado, e desanexe-os (socket.off) além de chamar socket.disconnect() quando a conexão não for mais necessária (por exemplo, ao desmontar o componente ou ao sair do usuário) para evitar vazamentos de memória em SPAs.
Reconexão
O socket.io reconecta automaticamente por padrão. Para personalizar, escute os eventos disconnect e connect_error e reconecte com backoff exponencial, redefinindo o atraso em uma connect bem-sucedida.
📊 Tabela de Referência Rápida
| Método | Descrição | Caso de Uso |
|---|---|---|
| connect() 🔐 | Conectar ao servidor WebSocket | Estabelecer conexão |
🔐
connect()requer um usuário autorizado — autentique primeiro via AuthProvider. Após conectar, anexe manipuladores de eventos comsocket.on(...).
❓ Perguntas Comuns (FAQ)
Como me conecto ao servidor WebSocket?
Use WS.connect() para abrir uma conexão — é síncrono e retorna um Socket do socket.io. Requer um usuário autorizado, então chame AuthProvider.auth(...) primeiro. Aguarde o evento connect antes de confiar no socket, então anexe manipuladores com socket.on('<event_marker>', callback).
A quais eventos posso me inscrever?
Não há uma lista fixa de eventos do SDK. Os eventos são definidos pela configuração do seu módulo de Eventos no painel de administração (com a opção WebSocket habilitada), e você escuta um evento pelo seu marcador com socket.on('<event_marker>', callback). Veja connect() para exemplos de carga útil (produto, usuário, pedido, formulário).
Como lido com quedas de conexão?
O socket.io reconecta automaticamente por padrão. Para personalizar, escute os eventos disconnect e connect_error e reconecte com backoff exponencial (por exemplo, 1s, 2s, 4s, 8s, até um máximo), redefinindo o contador de atraso em uma connect bem-sucedida.
Como evito vazamentos de memória com assinaturas WebSocket?
Desanexe manipuladores de eventos (socket.off) e chame socket.disconnect() quando os componentes forem desmontados ou a conexão não for mais necessária. No React, faça isso na limpeza do useEffect; no Vue, no beforeUnmount.
🎓 Melhores Práticas
- Autentique primeiro -
connect()requer um usuário autorizado. - Não aguarde connect() - É síncrono e retorna um
Socket. - Inscreva-se após a conexão abrir - Anexe manipuladores após o evento
connectser acionado. - Limpe - Desanexe manipuladores (
socket.off) esocket.disconnect()para evitar vazamentos de memória em SPAs. - Lide com a reconexão - o socket.io reconecta automaticamente; personalize com
disconnect/connect_errore backoff se necessário. - Valide as cargas úteis dos eventos - A forma da carga útil depende da fonte do evento; verifique os campos antes de usá-los.
🔗 Documentação Relacionada
- Módulo AuthProvider - Autorize o usuário antes de conectar
- Módulo de Pedidos - Eventos de pedidos para rastreamento de pedidos em tempo real
- Módulo de Usuários - Eventos de usuários para notificações de registro
- API WebSocket