피드로 돌아가기
Polymarket's price WebSocket can stall while connected (and the docs won't warn you)
Dev.toDev.to
Backend

Silent Stall 방지를 위한 Client-side Liveness Monitoring 및 필터링 설계

Polymarket's price WebSocket can stall while connected (and the docs won't warn you)

BlueWhale-Quant-Lab2026년 6월 2일3intermediate

Context

Polymarket의 RTDS WebSocket API 사용 시 문서와 실제 서버 동작 간의 불일치로 인한 데이터 누락 발생. 특히 Connection 상태가 유지됨에도 데이터 전송이 중단되는 Silent Stall 현상으로 인해 Trading Bot의 가격 참조 오류 및 전략 작동 중단 문제 노출.

Technical Solution

  • 서버 사이드 필터의 정규식 불일치 및 무응답 문제를 해결하기 위한 No-filter Subscription 및 Client-side Filtering 구조 채택
  • Transport Layer의 연결 상태에 의존하지 않고 last_data_ts 기반의 Application Layer Liveness Check 로직 구현
  • 데이터 공백이 45초 지속될 경우 강제 Socket Close 후 재연결을 수행하는 Heartbeat 검증 메커니즘 도입
  • Chainlink 오라클의 데이터 틱 간격(2~30s)을 고려하여 30,000ms 초과 데이터는 폐기하는 Staleness Gate 적용

1. WebSocket 연결 상태(`closed` 속성)만 믿지 말고 데이터 수신 간격을 측정하는 Watchdog 타이머를 구현했는가?

2. 서버 사이드 필터링의 신뢰성이 낮을 때 전수 수신 후 클라이언트에서 처리하는 Fallback 전략을 검토했는가?

3. 데이터 생성 시점(Payload Timestamp)과 수신 시점의 차이를 계산하여 Stale Data를 필터링하는 로직이 포함되었는가?

원문 읽기