Aller au contenu

Flux WebSocket

APIExpose expose un firehose et 17 flux filtrés :

Endpoint Contenu
ws://127.0.0.1:12345/ws tous les événements sauf esevent.*
ws://127.0.0.1:12345/ws/<stream> uniquement les événements routés vers ce flux

Par défaut le SDK ouvre le seul firehose /ws. Pour s'abonner à des flux spécifiques :

const client = new APIExposeClient({ streams: ['score', 'timer', 'frontend'] });

Chaque flux a sa propre socket ; le SDK reconnecte chacune indépendamment et rapporte un état connection.lost / connection.restored unique.

Table de routage

Les événements sont routés vers les flux selon le préfixe de leur Type :

Flux Préfixes de Type
frontend ui.
marquee marquee.
topper topper.
instruction-card instruction-card.
screen screen.
panel panel., theme.
ingame ingame., retroarch., wrapper.
arcade arcade., mame., fbneo., outputs.
score score.live.
timer timer.live.
retroachievements retroachievements.
hiscore hiscore.
media media.
roms roms., rom-pack., romset.
system startup., health., version., hub., config., maintenance., rules., notifications.
control commands., intent., es-control.
esevent esevent. — disponible uniquement ici, pas sur le firehose

Firehose ou flux ?

Pour un overlay, le firehose est le plus simple et peu coûteux (trafic loopback). Utilisez les flux filtrés pour des clients contraints ou une isolation stricte par usage — ex. un écran marquee qui n'ouvre que /ws/marquee.