איך אפשר לעזור?

אפשר לתאר בקצרה במה מדובר, ונחזור בדוא״ל.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
לעמוד הבית

Transporte: WebSocket, fallback HTTP e reconexão

Como o widget se comunica com o servidor do chat: endereços, subprotocolo rc.v1, formato dos quadros, códigos de erro e fechamento, limites, reconexão com seq e deduplicação e fallback HTTP por Server-Sent Events e long polling.

Esta página descreve o que acontece entre o widget no navegador e o servidor do chat. Ela serve para solucionar problemas (aba de rede das ferramentas do desenvolvedor), definir regras de proxy e firewall e configurar sua Content Security Policy.

Importante: o protocolo de comunicação é a interface entre nosso widget e nosso servidor. Clientes próprios que usam o protocolo diretamente não têm suporte oficial; campos podem ser ampliados dentro da versão 1 do protocolo. Para interfaces próprias, use a API JavaScript; para conexões de servidor, webhooks e a API do servidor.

Endereços

Como o widget encontra o endereço WebSocket:

  1. data-rc-ws-url na tag do carregador, window.ReactiveChatSettings.wsUrl ou ReactiveChat('boot', { wsUrl }) – se definido, esse valor se aplica.
  2. Caso contrário, é deduzido do local de loader.js: wss://ws. + as últimas duas partes do domínio + /rc_wss/. cdn.reactive.chat vira wss://ws.reactive.chat/rc_wss/.

Disso surgem duas armadilhas:

A rota WebSocket não avalia parâmetros de query.

Estabelecer a conexão

Formato dos quadros

Toda mensagem nas duas direções tem este formato:

{ "v": 1, "t": "msg", "id": "01JAB3C4D5E6F7G8H9JKMNPQRS", "ts": 1792500000000, "d": { } }

Tipos e campos desconhecidos são ignorados sem aviso; isso mantém widgets antigos compatíveis com servidores mais novos.

Tipos de mensagem em resumo

Do widget para o servidor:

Do servidor para o widget:

Códigos de erro

Um erro chega como quadro t: "error" com d.code, d.message (inglês, apenas para desenvolvedores), d.retry (no, immediate, backoff, after_reinit) e, quando necessário, d.retry_after_ms e d.detail. A lista é fechada; um código desconhecido é tratado como internal.

Códigos de fechamento

Limites por conexão

O servidor envia os valores vinculantes em init_ok.limits e init_ok.features:

Reconexão, ordem e duplicatas

Fallback HTTP

Se uma rede não permitir WebSocket, o chat continua por requisições HTTPS comuns, com os mesmos quadros e limites. Somente o widget usa isso; a interface dos atendentes sempre conecta por WebSocket. A versão resumida para editores está em Fallback HTTP.

Quando se aplica:

Sem fetch no navegador, não há fallback. Se uma conexão WebSocket existente cair, o widget se reconecta por WebSocket. Após um fallback, verifica silenciosamente uma vez por página se um WebSocket já passa; se passar, exclui rc_http, e a próxima página volta a usar WebSocket.

As requisições (em https://ws.reactive.chat/rc_wss/h/):

O widget tenta SSE primeiro; se nenhum primeiro quadro chegar em 5 segundos (por exemplo, por buffering em um proxy), muda para long polling. Trata erros como 404 (unbekannt), 403, 413 ou 429 como queda da conexão e tenta novamente após uma espera. Após 60 segundos sem requisição, o servidor fecha a conexão. CORS: Access-Control-Allow-Origin reflete a origem, sem credenciais; a verificação de origem acontece em init, como no WebSocket.

Requisitos do seu lado:

Armazenado no navegador: apenas a entrada rc_http em sessionStorage com o horário da conexão HTTPS, sem dados pessoais.

Qual rota está ativa

Na aba de rede das ferramentas do desenvolvedor:

A seguir: Limites e cotas · Solução de problemas

עדכון אחרון: