La pregunta útil es qué pasa después de perder una actualización. Un transporte puede mover mensajes rápidamente y dejarte igualmente con un tablero local incompleto. Elige primero el contrato de carga y recuperación, y luego el transporte que pueda operarlo dentro de tu presupuesto.
Compara los contratos de entrega
| Modelo | Forma típica de integración | Lo que debes establecer |
|---|---|---|
| Sondeo REST | Solicitar un snapshot o los cambios a intervalos | Alcance del snapshot, caducidad del cursor, coste de la solicitud, límites de tasa y cómo se representan las eliminaciones |
| Server-sent events | Mantener abierto un stream de eventos HTTP y consumir mensajes | Soporte de reproducción, identificadores de evento, comportamiento del heartbeat, autenticación y resincronización |
| WebSocket | Abrir una conexión e intercambiar mensajes de aplicación | Protocolo de suscripción, confirmaciones, números de secuencia, contrapresión y recuperación |
HTTP define la semántica de solicitud y respuesta; REST es un estilo arquitectónico, no una garantía de completitud del snapshot. SSE define un stream de eventos en texto y el comportamiento de EventSource en el navegador, incluidos los mecanismos de reconexión. WebSocket admite comunicación bidireccional. Ninguno de esos estándares establece la cobertura de actualizaciones ni la garantía de reproducción de un servicio concreto. Semántica HTTP, estándar SSE, estándar WebSockets.
Entiende lo que añade el sondeo
Supón que sondeas cada diez segundos y un cambio queda disponible justo después de un sondeo. Tu siguiente solicitud puede no verlo durante casi diez segundos, antes de sumar el tiempo de la solicitud y el retraso aguas arriba. Bajo la suposición deliberadamente simplificada de que los cambios llegan de forma uniforme entre sondeos perfectamente regulares, el retraso medio de detección que introduce el sondeo es la mitad del intervalo: cinco segundos.
Ese cálculo es un modelo de planificación, no una medición del servicio. Las pausas del planificador, las solicitudes secuenciales de varios deportes, el comportamiento de la caché y los reintentos cambian el resultado. El sondeo tampoco puede recuperar cada precio intermedio si el servicio devuelve solo el último snapshot. Un valor puede cambiar dos veces entre sondeos y terminar donde empezó.
REST suele ser un punto de partida útil cuando la aplicación necesita snapshots periódicos, la simplicidad del transporte importa y el presupuesto de solicitudes sostiene la cadencia requerida. Modela el volumen de solicitudes antes de aumentar la frecuencia.
El streaming traslada el trabajo a la gestión del estado
Un stream puede entregar actualizaciones sin esperar tu siguiente sondeo programado. Aun así necesitas saber si cada mensaje es un snapshot completo, un upsert, una eliminación o una alerta disparada por un umbral. Un feed de alertas de caídas de cuotas no debería tratarse como un feed completo de cambios de mercado, salvo que el servicio lo defina expresamente así.
Para una visualización de solo lectura, SSE puede encajar bien cuando bastan eventos del servidor al cliente y el backend lo admite. Una conexión EventSource del navegador tiene su propia API de credenciales y reconexión; no asumas que un cliente del lado del servidor puede sustituirse por el EventSource del navegador conservando cabeceras secretas personalizadas. Pon las credenciales en un backend controlado. Estándar SSE.
WebSocket es útil cuando el contrato incluye suscripciones dinámicas u otros mensajes del cliente. El nombre del transporte por sí solo no significa que los mensajes sean intercambiables entre servicios. Trata la gramática de suscripción, los identificadores de mercado y la negociación de versiones como parte de la API.
Diseña la ruta de reconexión antes que la ruta feliz
Lo siguiente es una lista de verificación de diseño de aplicación, no un protocolo propietario sin documentar:
- Obtén un snapshot y un límite o cursor documentado para ese snapshot.
- Aplica los cambios posteriores en el ámbito de ordenación definido por el servicio.
- Rechaza los duplicados sin perder actualizaciones legítimas.
- Detecta una secuencia ausente o un cursor caducado donde el contrato lo haga posible.
- Marca el estado mostrado como obsoleto mientras te recuperas.
- Reproduce desde un cursor admitido o sustituye el estado con un nuevo snapshot completo.
Si un snapshot y un stream no pueden unirse en un límite documentado, puede haber un hueco entre ellos. Explica esa limitación en lugar de afirmar una sincronización sin pérdidas. El mecanismo de identificador del último evento de EventSource solo es útil cuando el servidor también implementa un contrato de reproducción compatible.
Acota la cola en memoria. Decide si los consumidores lentos pueden saltarse actualizaciones intermedias y conservar el último precio, o si cada cambio debe registrarse de forma duradera. Son productos distintos con necesidades distintas de almacenamiento y recuperación.
Mantén cuatro mediciones separadas
Mide por separado el tiempo de ida y vuelta de la solicitud, la cadencia de actualización observada, la frescura de la fuente al cliente y la recuperación de la conexión. Una latencia REST baja mide lo rápido que se completó una solicitud. No te dice cuándo cambió por última vez el precio de la fuente. Un stream estable puede transportar datos antiguos; un snapshot HTTP puede contener datos actuales.
Usa nuestra metodología de benchmark para definir relojes y emparejamiento antes de comparar números. Para feeds relacionados con Pinnacle, la guía de normalización separa la identidad de la fuente de la elección del transporte.
Para el lado operativo de dos de estos transportes, la guía de configuración de SSE en pnclPULSE explica cómo mantener abierto el stream de caídas y reconectarlo, y la página del complemento WebSocket en pnclODDS explica lo que cuesta el feed en bruto y lo que no reenvía.
Fuentes 3 referencias
Documentación primaria usada en esta guía. Las fechas de comprobación se refieren a la revisión de la fuente.
- RFC 9110: semántica HTTPComprobado el 26 sept 2026
- WHATWG HTML: server-sent eventsComprobado el 26 sept 2026
- Estándar WebSockets de WHATWGComprobado el 26 sept 2026