Ping/Pong
Ambos feeds admiten elping/pong estándar de WebSocket. Puedes enviar ping() de forma proactiva en un intervalo y seguir el pong para comprobar que la conexión sigue viva.
Suscripciones
Por defecto, un cliente conectado recibe todas las actualizaciones de mercado de todos los deportes y ligas. Para restringir el flujo, envía uno de los siguientes comandos como un frame de texto JSON después de que el socket estéopen. Los comandos rigen durante toda la vida de la conexión.
Un cliente que nunca envía un comando de suscripción permanece en modo de difusión total, de modo que las integraciones existentes siguen funcionando sin cambios.
Suscribirse por gameID, liga o deporte
Instala un filtro. LosgameIDs son cadenas hexadecimales ObjectID de Mongo de 24 caracteres; los leagueIDs son códigos cortos como NBA / MLB / EPL; los sportIDs son tokens en minúsculas como basketball / baseball / soccer.
replace: trueborra las suscripciones existentes de esta conexión e instala las listas nuevas. Pasa la conexión a modo filtrado.replace: falseañade las claves nuevas a aquello a lo que la conexión ya está suscrita.
gameID, parentGameID, league o sport coincide con alguna de tus suscripciones.
Cancelar suscripción
Quita claves concretas. La conexión permanece en su modo actual (filtrado o suscripción total).Suscribirse a todo
Comodín explícito. Útil si antes restringiste consubscribe y quieres volver a ampliar sin reconectar. Borra las suscripciones por clave de la conexión.
Semántica de enrutado
- Una suscripción por
gameIDtambién recibe actualizaciones de juegos hijo cuyoparentGameIDcoincida (p. ej. los derivados F5-MLB llegan a los suscriptores del juego padre). - Los IDs de liga no distinguen mayúsculas —
mlbyMLBson equivalentes. - Los IDs de deporte no distinguen mayúsculas —
baseballyBaseballson equivalentes. - Las cadenas vacías dentro de los arrays se ignoran.
subscribeconreplace: falsey arrays vacíos no tiene efecto (un cliente con un error no puede vaciar su propio flujo por accidente al enviar un subscribe aditivo vacío).subscribeconreplace: truey arrays vacíos es la vía legítima de «borrar todas mis suscripciones»: la conexión entra en modo filtrado con cero suscripciones y no recibe nada hasta que vuelvas a suscribirte o envíessubscribeAll.
Mensajes
Cada mensaje en/price-stream llega como una 2-tupla [type, payload]. Se difunden tres tipos de mensaje.
orderUpdate
Se emite cada vez que cambia una orden en cualquier mercado (nueva, editada, cruzada o cancelada). El payload solo incluye los sideOrders que el usuario receptor puede ver (sus propias órdenes más las contrapartes cruzables).
Las entradas de sideOrders de órdenes colocadas con orderType: "postArb" incluyen isPostArb: true; en el resto de casos el campo se omite.
orderUpdate en mercados moneyline1x2
En moneyline1x2 (fútbol a 3 vías: local / empate / visitante), la selección se identifica por el par market + side en lugar de participantID / OU:
market— el resultado del que trata el mercado: un hex ObjectID de participante (equipo local o visitante) o la cadena literal"draw".side—"yes"o"no"sobre ese resultado.OU,totalyspreadno están, yparticipantIDestá vacío — usamarket+side.
sideOrders.
gameUpdate
Se emite cuando se crea un juego o cambia su estado (apertura o cierre de mercados, actualizaciones de hora de inicio). El payload es el juego renderizado completo.
messageType: marketOpen, marketClosed. Trata el campo como extensible e ignora los valores desconocidos.