Nola lagun zaitzakegu?

Esaguzu labur zertaz ari zaren, eta posta elektronikoz erantzungo dizugu.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Itzuli hasierako orrira

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

Azken eguneratzea: