Miben segíthetünk?

Írja le röviden, miről van szó – e-mailben jelentkezünk.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Kezdőlap

Transporte: WebSocket, alternativa HTTP y reconexión

Cómo se comunica el widget con el servidor de chat: direcciones, subprotocolo rc.v1, formato de tramas, códigos de error y cierre, límites, reconexión con seq y deduplicación, y alternativa HTTP mediante Server-Sent Events y sondeo largo.

Esta página describe lo que ocurre entre el widget del navegador y el servidor de chat. Le servirá para resolver problemas (pestaña de red de las herramientas de desarrollo), configurar reglas de proxy y cortafuegos y definir su Content Security Policy.

Importante: el protocolo de comunicación es la interfaz entre nuestro widget y nuestro servidor. Los clientes propios que utilizan directamente el protocolo no cuentan con soporte oficial; los campos pueden ampliarse dentro de la versión 1 del protocolo. Para sus propias interfaces, utilice la API JavaScript; para conexiones con servidores, los webhooks y la API de servidor.

Direcciones

Cómo encuentra el widget la dirección WebSocket:

  1. data-rc-ws-url en la etiqueta del cargador, window.ReactiveChatSettings.wsUrl o ReactiveChat('boot', { wsUrl }): si se establece, se aplica ese valor.
  2. En caso contrario, se deduce de la ubicación de loader.js: wss://ws. + los dos últimos componentes del dominio + /rc_wss/. cdn.reactive.chat se convierte en wss://ws.reactive.chat/rc_wss/.

Esto conlleva dos posibles problemas:

La ruta WebSocket no evalúa parámetros de consulta.

Establecer la conexión

Formato de las tramas

Todos los mensajes en ambos sentidos tienen esta forma:

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

Los tipos y campos desconocidos se ignoran sin aviso; esto mantiene la compatibilidad de los widgets antiguos con servidores más recientes.

Resumen de los tipos de mensaje

Del widget al servidor:

Del servidor al widget:

Códigos de error

Un error llega como una trama t: "error" con d.code, d.message (en inglés, solo para desarrolladores), d.retry (no, immediate, backoff, after_reinit) y, cuando es necesario, d.retry_after_ms y d.detail. La lista es cerrada; un código desconocido se trata como internal.

Códigos de cierre

Límites por conexión

El servidor envía los valores vinculantes en init_ok.limits e init_ok.features:

Reconexión, orden y duplicados

Alternativa HTTP

Si una red no permite pasar un WebSocket, el chat continúa mediante solicitudes HTTPS normales, con las mismas tramas y los mismos límites. Solo la utiliza el widget; la interfaz de agentes siempre se conecta por WebSocket. La versión breve para editores está en Alternativa HTTP.

Cuándo se aplica:

Sin fetch en el navegador no hay alternativa. Si se interrumpe una conexión WebSocket existente, el widget vuelve a conectarse mediante WebSocket. Tras pasar a la alternativa, comprueba discretamente una vez por página si ya puede pasar un WebSocket; si lo consigue, elimina rc_http y la siguiente página vuelve a utilizar WebSocket.

Las solicitudes (bajo https://ws.reactive.chat/rc_wss/h/):

El widget prueba primero SSE; si no llega la primera trama en 5 segundos (por ejemplo, porque un proxy la almacena en búfer), pasa al sondeo largo. Trata errores como 404 (unbekannt), 403, 413 o 429 como una interrupción de la conexión y reintenta tras una espera. Después de 60 segundos sin solicitudes, el servidor cierra la conexión. CORS: Access-Control-Allow-Origin refleja el origen, sin credenciales; el origen se comprueba en init, igual que con WebSocket.

Requisitos de su lado:

Almacenado en el navegador: solo la entrada rc_http en sessionStorage con el momento de establecimiento de la conexión HTTPS, sin datos personales.

Qué ruta está activa

En la pestaña de red de las herramientas de desarrollo:

Siguiente: Límites y cuotas · Resolución de problemas

Utolsó frissítés: