コネクション、サブスクリプション、そしてハートビート
コネクション、サブスクリプション、そしてハートビート
6MM WebSocketストリームに接続し、トピックを購読し、つながりを維持し、メッセージ封筒を安全に処理しましょう。
市場データや、ポーリングなしで最新の状態を保つ必要があるプライベートなユーザー状態の更新には WebSocket ストリームを活用しましょう。
接続 URL
プライベートストリームには、プライベートチャネルドキュメントに記載されている listenKey やアクセストークンなどの認証コンテキストが必要です。
購読
購読確認の成功:
購読解除
アプリケーションping(アプリケーションping)
メッセージ封筒
パブリックプッシュは一貫したエンベロープを使用します:
運用上の提言
- すべての購読、解約、pingリクエストに対して一意のクライアント側
idを生成する。 - reconnectを新しいセッションとして扱い、必要なトピックを再購読する。
- 返送された
topicがサービスが期待するチャネルと一致していることを検証する。 - プライベートな注文やアカウントイベントが関与する場合、メッセージ処理を冪等に保つこと。
- 接続状態の変化、サブスクリプションの確認、異常な切断をログ記録する。
Reconnectワークフロー
- 前のソケットを閉じるか破棄し、新しい接続を作成する。
- 有効な listenKey またはアクセストークンでプライベートストリームを再認証する。
- 必要なトピックをすべて再登録し、承認応答を待つこと。
- インクリメンタル更新を適用する前に、ローカルの注文簿状態を新しいスナップショットに置き換えます。
- 私的なイベントが見逃された可能性がある場合、未解決の命令、ポジション、バランスを REST で調整すること。
再接続試行にはジッター付きの有界指数バックオフを使いましょう。継続的に再接続するクライアントは、無期限に再接続するのではなくオペレーターに通知すべきです。
心拍と古い繋がり
- 最新の受信メッセージと成功したping確認を追跡する。
- 生産環境で承認された心拍間隔とアイドル閾値を使用。
- 設定済みの閾値を超えた場合、 TCP ソケットが開いているように見えても接続をステールとみなす。
- 古いソケットからのサブスクリプションを再利用しないでください;再接続のたびに明示的に再購読してください。
関連文書
- パブリックマーケットチャネル:トピック、注文簿の連続性、取引、キャンドル、ティッカー。
- プライベートユーザーチャネルlistenKeyライフサイクルと認証されたイベント。
- 統合推奨事項:再試行、冪等性、監視、打ち上げ試験。