Repository navigation
Conversation
here's a quick summary of what's gone into the C++ SDK since v3.0.0.Trading and setup (tier 1)
Data and discovery (tier 2)
Where we stopWith that, we cover everything the official Polymarket SDKs ship as stable. What's left there (builder program, gasless relayer, session keys, combos/RFQ, perps) is still beta or experimental in the official SDKs, so I'd suggest we stop here and pick those up once they stabilize. Next versionI'd lean toward 4.0.0 over 3.1:
If we'd rather call it 3.1, we should double-check what #30 actually breaks first. What do you think? |
|
Thanks for adding these streams, and for documenting which cases you observed live versus covered with fixtures. I reviewed bc3c073 and ran the eight focused tests locally; all passed. I also checked two lifecycle cases with a local WebSocket server and found two things I think we should fix before merging:
The subscription filtering and price parsing otherwise look consistent with the pinned SDK contract. These two cases are outside the current passing tests. |
|
Also after this pr is merged i will probably prepare the 4.0.0 release |
Summary
Adds the public RTDS and Sports WebSocket streams (#10).
SportsStream: typed live game results fromwss://sports-api.polymarket.com/ws. It answers the server'spingwithpongand reconnects after 30 s without frames.RtdsStream: comment and reaction subscriptions, plus Binance and Chainlink crypto prices, Chainlink 30/60 s TWAPs and Pyth equity prices fromwss://ws-live-data.polymarket.com.double.WebSocketOptionsgains a configurable ping text, a reply to a server text ping, and an idle reconnect timeout. The defaults keep current CLOB stream behavior.positionSizevalues seen in live comment profiles. This affectedGammaClientcomment listings as well as RTDS.The authenticated v2 price service and the RTDS
activitytopic are out of scope.Verification
Commands run and their actual results:
scripts/ci_local.sh --title "feat(stream): add RTDS and Sports WebSocket streams": title, release, debug, sanitizers, fuzz and clang passed. Quality failed on two clang-tidy performance findings. Afterstyle(rtds): satisfy clang-tidy performance checks,--jobs qualitypassed.test_websocket_heartbeat,test_sports_parsing,test_sports_stream,test_rtds_parsing,test_rtds_price_parsingandtest_rtds_stream.test_environmentandtest_gamma_socialwere extended and pass.Checks not run and the reason (or none):
Compatibility and evidence
Public API, binary compatibility, or release implications (or none):
Source compatible. New headers are
sports_stream.hppandrtds_stream.hpp. Binary layout changes:WebSocketOptionshas four new fields.WebSocketStatshasidle_timeouts.EnvironmentandConfighavesports_ws_url.Code compiled against an earlier release must be rebuilt.
For protocol changes: official docs links and the Python SDK commit or fixture source.
Frames, subscription rules, validation and models follow py-sdk commit
72297f05d6d8and ts-sdk commitd2f5b9901a14. Fixtures are frames recorded on 2026-10-18. Comment bodies, names, wallets, addresses and connection IDs are replaced with synthetic values. Sports and price frames carry no personal data.For live checks: distinguish observed outcomes from local fixture coverage.
Observed live with read-only connections:
positionSizefix; 2 had failed before it.PONGand no subscribe acknowledgment.Covered by fixtures only:
equity_priceswas silent while markets were closed, so the update and history frames are synthetic, built from the py-sdk model.comment_removed: none arrived live.finishedTimestamp: no game finished during the capture.