Saltar al contenido principal

Usa el contrato revisado de tiempo real

El comportamiento en tiempo real de Driver abarca la conexión del proveedor, uniones autenticadas a salas, listeners de pantalla, manejadores de reconexión, actualizaciones locales, notificaciones, vibración y limpieza. Un socket conectado o un evento recibido es transporte, no autorización, estado duradero, orden ni entrega exactamente una vez.

Una conexión socket no confirma la entrega del proveedor ni la limpieza completa de los listeners.

Disponibilidad​

El proveedor de socket puede conectarse después de cargar la sesión, independientemente de que las salas de producto autenticadas estén listas. Home, listas de pedidos, detalles de pedidos, mensajes, perfil y Root registran distintos conjuntos lógicos de salas/listeners según el usuario, token, conectividad y controles del ciclo de vida.

La interfaz del estado de conexión solo indica el estado del proveedor. No demuestra que el Driver actual se haya unido a todas las salas requeridas, haya salido de salas anteriores ni recibido todos los eventos autorizados.

Requisitos previos​

  • Autentica y autoriza antes de cada unión a sala y aplicación de evento.
  • Usa descriptores lógicos de salas en el contenido público; mantén privados los nombres e identificadores de sala.
  • Vincula los listeners a generaciones de pantalla/sesión/proyecto.
  • Haz idempotentes las uniones tras reconexión y simétrica la limpieza.
  • Vuelve a leer el estado autoritativo de API antes de aplicar cargas de eventos con consecuencias.
  • Define políticas de orden, deduplicación, repetición, eventos obsoletos y ejecución exactamente una vez.

Límites de responsabilidad​

ResponsableResponsabilidad
Proveedor de socketTransporte de conexión y ciclo de vida de bajo nivel
Responsable de sesión/proyectoGeneración, identidad autenticada y desmontaje ante cambios
Coordinador de salasUnir/salir de ámbitos lógicos exactos con autorización
Pantalla/controladorAñadir/quitar listeners con nombre de forma simétrica
Responsable de APIEstado autoritativo de pedidos/mensajes/usuario
Reductor de eventosValidar tipo, ámbito, revisión y deduplicación antes de actualizar localmente
Responsable de notificaciones/nativoEfectos de vibración/push/navegación, separados del recibo de socket
Responsable de observabilidadRecuentos de listeners/salas, reconexión, recibos de obsoletos/descartes/deduplicación y limpieza

Entradas y resultados​

Las entradas son la generación autenticada de sesión/proyecto, conexión del proveedor, conjunto lógico de salas, tipos de eventos registrados y últimas revisiones autoritativas.

Los resultados seguros distinguen conexión, confirmación de unión a sala, registro de listener, evento recibido, actualización reautorizada, actualización local aplicada y limpieza. Ningún booleano o evento único demuestra todas las etapas.

Los listeners actuales pueden añadir mensajes, reordenar/actualizar/quitar tarjetas de pedidos, combinar detalles del pedido, actualizar el estado de Driver/perfil, activar sugerencias de vibración/navegación o solicitar lecturas. Antes de aplicarlos, estos efectos deben validar la persona, pedido, ámbito de proyecto y revisión actuales.

Seguridad y privacidad​

  • Nunca uses la pertenencia a una sala socket como autorización.
  • Nunca confíes en la persona autora del evento, pedido, proyecto o audiencia sin verificar el ámbito en servidor y volver a leer de forma autorizada cuando tenga consecuencias.
  • No expongas públicamente nombres de salas, ID de socket, tokens, cargas, valores de contacto/pedido/mensaje ni hallazgos privados sobre listeners.
  • Limpia las salas/listeners al cerrar sesión, cambiar de cuenta/proyecto, desmontar una pantalla o reemplazar el proveedor.
  • Mantén los sockets, notificaciones push y navegación mediante enlaces profundos como entradas distintas.

Límites y estados de fallo​

EstadoInterpretación requerida
ConectadoExiste transporte; autenticación/salas/listeners siguen sin conocerse.
Desconectado/reconectandoPuede que falten eventos o estén obsoletos; se requiere una nueva lectura.
Sala unidaSuscripción candidata, no autorización de datos.
Evento recibidoIndicación incremental no confiable.
Cambió una tarjeta/burbuja/perfil localEfecto del reductor, no recibo duradero del backend.
Evento de reconexiónLas uniones/listeners pueden duplicarse si no son idempotentes.
Pantalla desmontadaSe solicitó limpieza, no se ha demostrado que termine.
Se actualizó el estado de conexiónSolo interfaz del proveedor.

El código fuente actual tiene limpieza incompleta: algunos listeners anónimos de conexión/registro de pedidos en Messages no se eliminan completamente; el detalle de logística no permite demostrar que no queden listeners de conexión sin filtrar; y puede quedar retenida la limpieza de la configuración asíncrona en segundo plano. Se excluyen las afirmaciones de ejecución exactamente una vez y limpieza completa.

Diagnóstico​

El socket está conectado, pero los datos están obsoletos​

Vuelve a leer el estado autorizado de API. La conexión no demuestra que las salas sean correctas, las revisiones actuales, que no se hayan perdido eventos ni que el proveedor esté saludable.

Un evento aparece dos veces​

Inspecciona los recuentos de listeners/salas, las generaciones de reconexión y las claves de deduplicación. No apliques dos veces una mutación con consecuencias.

Una pantalla se actualiza tras desmontarla o cerrar sesión​

Trátalo como un fallo de limpieza/seguridad. Detén el consumidor, invalida la generación de sesión y revisa todos los recibos de limpieza de listeners/salas/proveedores.

Las vistas de pedido/mensaje/perfil discrepan​

Cada consumidor tiene su propio reductor y tiempo de lectura. Concilia con lecturas actuales autorizadas, no por el orden de llegada de eventos.

El modal de estado de conexión muestra Update​

Ese control/estado del proveedor no demuestra reconexión, recuperación de salas ni vigencia de datos. Exige recibos explícitos del ciclo de vida.

Guías relacionadas: Usar el contrato de comunicación · Usar el contrato de consulta de pedidos · Inicio autenticado