Flux : SSE et WebSocket
GuideDéveloppeursDepuis la version 0.2.0
Sur cette page
Les flux sont relayés sans retenue : chaque évènement arrive quand l'amont l'émet.
Côté produit : Passerelle d'API ; côté exploitation : Flux SSE et WebSocket.
Server-sent events
curl -N -H "Authorization: Bearer $TOKEN" -H 'Accept: text/event-stream' https://api.example.com/events| Règle | Détail |
|---|---|
| Pas de délai total | Un flux ouvert n'est pas coupé par le budget de l'opération |
| Le silence le termine | Au-delà du délai de lecture de l'exploitant sans octet, le flux se ferme : faites émettre un battement (: ping) plus souvent |
| Débit | Compté à l'ouverture |
Le EventSource d'un navigateur ne sait pas poser Authorization. Lisez le flux avec fetch :
const res = await fetch("https://api.example.com/events", {
headers: { Authorization: `Bearer ${token}`, Accept: "text/event-stream" },
});
const reader = res.body.pipeThrough(new TextDecoderStream()).getReader();
for (;;) {
const { value, done } = await reader.read();
if (done) break;
handle(value); // découpez sur la ligne vide qui termine un évènement
}WebSocket
La mise à niveau est une requête comme une autre : identité et débit sont vérifiés à l'ouverture, puis la connexion survit au budget de l'opération.
// Un navigateur ne pose pas d'en-tête sur un WebSocket : l'exploitant décide comment l'identité
// arrive (cookie déclaré au contrat, edge qui authentifie). Un client serveur pose Authorization :
const ws = new WebSocket("wss://api.example.com/ws", { headers: { Authorization: `Bearer ${token}` } }); // Node (ws)Les canaux d'évènements d'un courtier (accusés, reprise) sont décrits à part : canaux asynchrones.