On the wire · 04:34:33 UTC Live 547 · Prematch 14,368 · Markets 56,913 Vol. I · No. 5 · Friday 13 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Réponse · Node.js · WebSocket

Appliquer snapshot et deltas Pinnacle dans une Map Node

Mis à jour le · PinnFeed · 1 min de lecture

Réponse : après subscribe, appliquez les parties du snapshot dans une Map indexée par id de marché (eventId:key), puis chaque changes[] des deltas (upsert / remove). Client complet : guide Python/Node. Nécessite Builder (99 €/mois).

Logique de fusion#

import WebSocket from "ws";

const markets = new Map(); // id -> market object
const KEY = process.env.PINNFEED_KEY;

function applyChange(ch) {
  if (ch.op === "upsert" || ch.type === "upsert") {
    const m = ch.market || ch.value;
    markets.set(m.id, m);
  } else if (ch.op === "remove" || ch.type === "remove") {
    markets.delete(ch.id || ch.marketId);
  }
}

const ws = new WebSocket("wss://pinnfeed.io/v1/stream", {
  headers: { "x-api-key": KEY },
  perMessageDeflate: true,
});

ws.on("open", () => {
  ws.send(JSON.stringify({
    type: "subscribe",
    sports: ["soccer"],
    markets: ["moneyline"],
    main: true,
  }));
});

ws.on("message", (buf) => {
  const msg = JSON.parse(buf.toString());
  if (msg.type === "ping") return ws.send(JSON.stringify({ type: "pong" }));
  if (msg.type === "snapshot" || msg.part != null) {
    for (const m of msg.markets || []) markets.set(m.id, m);
  }
  if (msg.type === "delta" && Array.isArray(msg.changes)) {
    for (const ch of msg.changes) applyChange(ch);
  }
});

Les noms de champs suivent la doc WebSocket. Plans payants : essai de 3 jours ; carte requise, débitée après le jour 3 sauf résiliation.

Voir aussi : snapshot et delta · reconnexion Node · frames bruts (Pro).

Contenu éducatif pour adultes (18+) : ni pronostics ni promesse de gain. En France, seuls les opérateurs agréés par l'ANJ peuvent proposer des paris en ligne.

Questions fréquentes#

Les événements se fusionnent-ils de la même façon ?#

Oui — gardez une seconde Map pour les événements si vous avez besoin des métadonnées home/away ; snapshot et delta peuvent porter les deux.

Pourquoi Builder ?#

Les clés Free/Hobby reçoivent 403 plan_lacks_ws sur le WebSocket. Le polling REST marche en Free ; le push demande Builder ou Pro.

Le plan WebSocket : Builder, 99 €/mois.

Les cotes Pinnacle en temps réel sur un seul WebSocket : les 13 sports, tous les marchés, cotes justes sans marge et cotes de clôture. 3 jours gratuits, résiliable en un clic.

Form K-1 · Free API key

Get your free API key.

One field. No password, no card: enter your email, click the link we send, and your key is on screen.

By continuing you agree to the Terms and Privacy Policy.

One free key per email. Link valid for 20 minutes.