安定したピナクルWebSocket:古い価格と再接続
回答: ソケットを信頼できない転送として扱います。(1) すべての ping に {"type":"pong"} で応答。(2) close では指数backoff+ジッタ、再購読、snapshot part === 1 でマップをクリア。(3) seq/ts と最終適用時刻を追跡し、無応答がSLAを超えたら強制再接続。(4) クローズコードを尊重(1001 deploy、4008 slow consumer)。Builderが必要(月額99ユーロ)。Node例:再接続。
Stale-price detection (client-side)#
import time
LAST = {"ts": 0.0}
STALE_SEC = 15 # your SLA — not a vendor latency claim
def on_message(msg):
if msg["type"] in ("snapshot", "delta", "ping"):
LAST["ts"] = time.time()
def watchdog():
if time.time() - LAST["ts"] > STALE_SEC:
raise TimeoutError("no frames; reconnect")
Quiet markets are normal — gate the watchdog on whether events you care about are live.
Failure modes#
| Signal | Action |
|---|---|
No pong path | Socket dies ~60 s after missed ping |
4008 slow_consumer | Narrow filters or speed up handlers |
1001 server_shutdown | Backoff reconnect (deploy) |
| Snapshot without clear | Ghost markets from the previous session |
We do not publish latency versus named competitors. Measure tick → your handler yourself.
CTA#
Builder. 3-day trial; card required, charged after day 3 unless cancelled. Docs: WebSocket.
よくある質問#
ゲストのスクレイピングで代用できますか?#
アカウントBANや遅延したゲスト板はよくある失敗です。文書化されたクローズコード付きのセルフサーブAPIキーがサポートされる道です。
1秒未満の更新を保証しますか?#
ハートビートとフレーム種別は文書化していますが、他社とのマーケティングRTTは出しません。プロセス内で端到端を計測してください。
成人向けの教育コンテンツですか?#
はい(18+)。
18歳以上の方を対象とした教育目的のコンテンツです。予想や利益の約束ではありません。日本では刑法により賭博は原則として禁止されています。