Esta página fue traducida automáticamente. Si encuentra errores o tiene sugerencias, contáctenos.
Problemas de conexión
No se puede conectar (conexión rechazada)
Síntomas: el handshake de WebSocket falla de inmediato con un error de conexión. Causas posibles:- Un firewall bloquea las conexiones salientes en el puerto 8443
- Hostname incorrecto
- Verifica el acceso saliente a
ws.rhombussystems.comen el puerto8443: - Comprueba que tu red/firewall permita WSS saliente en el puerto 8443
- Si estás detrás de un proxy corporativo, asegúrate de que se permitan las solicitudes de actualización (upgrade) de WebSocket
HTTP 401 Unauthorized
Síntomas: el handshake de WebSocket falla con HTTP 401. Causas posibles:- Token de API inválido
- Token de API expirado
- Falta el header
x-auth-apikey
- Verifica que tu token de API funcione con la API REST:
- Regenera el token en la consola de Rhombus en Settings > API Access
- Asegúrate de que el header
x-auth-apikeyesté configurado (no solo el parámetro de query)
HTTP 403 Forbidden
Síntomas: el handshake de WebSocket falla con HTTP 403. Causas posibles:- El token de API carece de permisos para el acceso a WebSocket
- Se usó un token de partner sin especificar la organización destino
- El token no tiene acceso a la organización especificada
- Comprueba los permisos del token en la consola de Rhombus
- Si usas un token de partner, envía el UUID de la organización destino en el encabezado
x-auth-org(el servidor leex-auth-orgde los encabezados de la solicitud, no de la cadena de query), mientras quex-auth-scheme=partner-api-tokenpermanece en la URL de conexión:
La autenticación basada en certificados no funciona
Síntomas: la conexión falla al usar certificados mTLS. Causa: las conexiones WebSocket no admiten autenticación basada en certificados. Solución: genera un token de API para las conexiones WebSocket. La autenticación con certificados solo se admite para la API REST.Problemas del protocolo STOMP
El frame CONNECTED nunca se recibe
Síntomas: el WebSocket se conecta correctamente, pero no se recibe ninguna respuesta STOMPCONNECTED después de enviar CONNECT.
Causas posibles:
- Frame STOMP
CONNECTmal formado - Falta el terminador nulo (
\x00) - Valor de
accept-versionincorrecto
- Verifica que tu frame incluya el terminador de byte nulo:
- Asegúrate de que haya una línea vacía (
\n\n) entre los headers y el cuerpo - Usa
accept-version:1.2(no1.0ni1.1)
No se reciben mensajes después de suscribirse
Síntomas: la conexión y la suscripción se realizan correctamente, pero no llegan frames MESSAGE. Causas posibles:- UUID de organización incorrecto en el tópico
- No ocurren eventos en la organización
- Frame de suscripción mal formado
- Verifica el UUID de tu organización llamando a la API REST:
- Dispara un evento de prueba (por ejemplo, ajusta una configuración de cámara) para confirmar que el flujo está activo
- Verifica que el formato del tópico sea exactamente
/topic/change/{orgUuid}sin barras finales ni espacios
Problemas de estabilidad de la conexión
La conexión se cae cada ~30 segundos
Síntomas: la conexión WebSocket se cierra después de aproximadamente 30 segundos de inactividad. Causa: no se están enviando heartbeats. Solución: implementa el emisor de heartbeats que envía\n cada 10 segundos:
La conexión se cae de forma intermitente
Síntomas: la conexión funciona durante un tiempo y luego se cae de forma impredecible. Causas posibles:- Inestabilidad de la red
- Mantenimiento del lado del servidor
- Timeout del balanceador de carga
- Implementa la reconexión automática con backoff:
- Registra los motivos de desconexión para identificar patrones
- Monitorea la recepción de heartbeats para detectar conexiones muertas de forma proactiva
Alto uso de memoria con el tiempo
Síntomas: la memoria de la aplicación crece de forma constante mientras está conectada. Causas posibles:- Los eventos se acumulan en una cola sin límite
- No se procesan los mensajes con suficiente rapidez
- Usa buffers de mensajes con límite:
- Procesa los eventos de forma asíncrona para evitar la contrapresión (backpressure)
- Descarta o registra los eventos si la cola de procesamiento está llena
Problemas de procesamiento de eventos
Eventos faltantes
Síntomas: algunos eventos que aparecen en la consola de Rhombus no aparecen en el flujo de WebSocket. Causas posibles:- El filtrado de eventos es demasiado agresivo
- Una breve desconexión causó la pérdida de eventos
- El evento ocurrió antes de que se estableciera la suscripción
- Habilita temporalmente todos los eventos para verificar el flujo:
- Los eventos de WebSocket son solo en tiempo real. Para eventos históricos, usa la API REST
- Asegúrate de que SUBSCRIBE se envíe antes de esperar eventos
JSON mal formado en el cuerpo del evento
Síntomas:json.loads() falla con el cuerpo de MESSAGE.
Causas posibles:
- El parser de frames no separa correctamente el cuerpo de los headers
- Bytes nulos o espacios en blanco adicionales en el cuerpo
- Elimina los bytes nulos antes de parsear:
- Verifica que tu parser de frames divida en
\n\ncorrectamente (solo la primera ocurrencia)
Herramientas de depuración
Habilitar el registro de frames sin procesar
Agrega registro (logging) para ver exactamente qué se envía y se recibe:Probar con websocat
Usawscat para interactuar manualmente con el endpoint de WebSocket:
^@ representa el byte nulo (\x00). En la mayoría de las terminales, escribe Ctrl+@ o Ctrl+Shift+2 para producirlo.Monitor de la CLI de Rhombus
Usa la CLI de Rhombus para verificar que tu cuenta y el endpoint de WebSocket funcionen:Cómo obtener ayuda
Si has probado los pasos anteriores y sigues experimentando problemas:- Consulta la documentación de la API de Rhombus para ver actualizaciones
- Verifica que tu organización de Rhombus tenga habilitado el acceso a WebSocket
- Contacta al soporte de Rhombus con:
- El UUID de tu organización
- El mensaje de error o el código de estado HTTP
- La marca de tiempo del intento de conexión fallido
- Tu lenguaje de cliente y la versión de la biblioteca de WebSocket