Skip to content

Feat/websockets#1

Merged
elliotdotsol merged 15 commits intomainfrom
feat/websockets
Apr 11, 2026
Merged

Feat/websockets#1
elliotdotsol merged 15 commits intomainfrom
feat/websockets

Conversation

@elliotdotsol
Copy link
Copy Markdown
Contributor

No description provided.

elliotdotsol and others added 14 commits March 18, 2026 18:06
Replace the ad-hoc WS implementation with a typed, room-based protocol
derived from the AsyncAPI spec. Types are auto-generated and rooms are
validated by check-routes, matching the existing REST/webhook pattern.

- Generic `subscribe(room, filters?)` / `unsubscribe(room)` with typed
  overloads (filters optional only for rooms where spec allows it)
- `connect()` returns Promise<void>, `subscribe()` returns Promise with
  server ack (rejected filters, timeout handling)
- `on()` returns disposer function for ergonomic React/framework cleanup
- `removeAllListeners()` for bulk teardown
- Configurable `subscribeTimeout` via StructWebSocketConfig
- Auto-ping keepalive (30s), replay subscriptions on reconnect
- AsyncAPI spec pipeline: fetch → generate types → check rooms/schemas
- 9 rooms: trades, asset_prices, asset_window_updates, market_metrics,
  event_metrics, position_metrics, trader_pnl, accounts, order_book

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the ad-hoc WS implementation with a typed, room-based protocol
derived from the AsyncAPI spec. Types are auto-generated and rooms are
validated by check-routes, matching the existing REST/webhook pattern.

- Generic `subscribe(room, filters?)` / `unsubscribe(room)` with typed
  overloads (filters optional only for rooms where spec allows it)
- `connect()` returns Promise<void>, `subscribe()` returns Promise with
  server ack (rejected filters, timeout handling)
- `on()` returns disposer function for ergonomic React/framework cleanup
- `removeAllListeners()` for bulk teardown
- Configurable `subscribeTimeout` via StructWebSocketConfig
- Auto-ping keepalive (30s), replay subscriptions on reconnect
- AsyncAPI spec pipeline: fetch → generate types → check rooms/schemas
- 9 rooms: trades, asset_prices, asset_window_updates, market_metrics,
  event_metrics, position_metrics, trader_pnl, accounts, order_book

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# Conflicts:
#	README.md
#	openapi/polymarket.json
#	package.json
#	src/generated/polymarket.ts
#	src/ws.ts
Comment thread src/ws-transport.ts Fixed
@elliotdotsol elliotdotsol merged commit 40c7bb4 into main Apr 11, 2026
5 checks passed
@elliotdotsol elliotdotsol deleted the feat/websockets branch April 11, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants