Paano kami makakatulong?

Sabihin sa amin nang maikli kung tungkol saan ito—babalikan ka namin sa email.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Pumunta sa panimulang page

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

Huling na-update: