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

Aplicar snapshot e deltas da Pinnacle num Map Node

Atualizado em · PinnFeed · 1 min de leitura

Resposta: após subscribe, aplique as partes do snapshot num Map indexado pelo id do mercado (eventId:key), depois cada changes[] dos deltas (upsert / remove). Cliente completo: guia Python/Node. Precisa de Builder (€99/mês).

Lógica de merge#

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);
  }
});

Os nomes dos campos seguem a doc WebSocket. Planos pagos: teste de 3 dias; cartão obrigatório e cobrado após o dia 3 salvo cancelamento.

Veja também: snapshot e delta · reconexão Node · frames raw (Pro).

Conteúdo educativo para maiores de 18 anos. Sem palpites nem lucro garantido. No Brasil, aposte apenas em operadores autorizados pela SPA/MF.

Perguntas frequentes#

Os eventos fazem merge da mesma forma?#

Sim — guarde um segundo Map para eventos se precisar dos metadados home/away; snapshot e delta podem trazer ambos.

Por que Builder?#

Chaves Free/Hobby recebem 403 plan_lacks_ws no WebSocket. Polling REST funciona no Free; push precisa de Builder ou Pro.

O plano WebSocket: Builder, €99/mês.

Odds da Pinnacle em tempo real por um único WebSocket: os 13 esportes, todos os mercados, odds justas sem margem e odds de fechamento. 3 dias grátis, cancele com um clique.

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.