障害対応
WebSocket 接続成功後にデータが届かない場合の対処法
WebSocket 接続は確立されたのに相場データが届かない場合、購読メッセージ、銘柄表記、エンドポイント、取引時間帯、ハートビートの5項目を順に点検します。
更新日時:
保守運営:AllTick 公式エンジニアリングチーム
対象読者:WebSocket 接続後にプッシュメッセージを受信できない開発者
要約 · 30秒開発サマリー
WebSocket の接続成功はネットワーク到達と Token の基本検証が通ったことだけを意味します。データが届かない主な原因は、(1) 購読メッセージの未送信・形式ミス、(2) 銘柄コードの表記違い、(3) 資産クラスと接続先 URL の不一致、(4) 市場の休場・昼休み、(5) ハートビート欠如による切断の5つです。
01
5ステップ診断チェックリスト
1購読メッセージの送信確認:send 前後にログを出力し、サーバーからの購読応答フレームを確認する。
2銘柄コード形式の確認:香港株は 700.HK、米国株は AAPL.US、為替は EURUSD のように指定する。
3接続先 URL の一致確認:株式は quote-stock-b-ws-api、為替・貴金属は quote-b-ws-api に接続する。
4取引時間帯の確認:夜間休場、週末、香港株の昼休み中は新規約定が配信されない。
5ハートビートの確認:定期的にハートビート(cmd_id 22000)を送らないとサーバー側で接続が閉じられる。
02
24時間稼働している通貨ペアでの疎通テスト
コード実装の問題か市場の休場時間帯かを素早く切り分けるには、平日はほぼ24時間値動きがある為替ペア(EURUSD など)を quote-b-ws-api で一時的に購読してみます。これでデータが届けば通信・購読ロジックは正常であり、元の銘柄コードまたは取引時間帯に原因があると特定できます。
pythonpython
import asyncio, json, os, uuidimport websocketsasync def probe(): token = os.getenv("ALLTICK_API_TOKEN", "YOUR_API_TOKEN") url = f"wss://quote.alltick.co/quote-b-ws-api?token={token}" async with websockets.connect(url) as ws: await ws.send(json.dumps({ "cmd_id": 22004, "seq_id": 1, "trace": str(uuid.uuid4()), "data": {"symbol_list": [{"code": "EURUSD"}]}, })) for _ in range(5): print(await asyncio.wait_for(ws.recv(), timeout=30))if __name__ == "__main__": asyncio.run(probe())03
再接続後にデータが止まる場合
サーバーは切断された旧コネクションの購読状態を引き継ぎません。アプリ起動時の1回だけ購読メッセージを送信する実装になっていると、回線瞬断からの再接続後に「接続済みだがデータが届かない」状態に陥ります。必ず接続確立のたびに購読メッセージを送信してください。
04
サポートへ問い合わせる際に準備すべき情報
- 接続先 URL(Token は伏せる)と送信した購読 JSON 全文。
- 接続・購読直後に受信したすべての生メッセージ。
- 事象の発生時刻(タイムゾーン明記)と継続時間。
- 使用しているプログラミング言語、ライブラリ名、バージョン。
仕様出典と検証記録 · 2026-10-13
以下の一次資料で関連するエンドポイント、フィールド、取引所規則を確認しました。
Python コードは Python 3.14.0 の ast.parse で構文解析を通過しました。依存関係、実行互換性、ネットワーク応答の検証は含みません。
今回の確認では実際の Token による AllTick 要求や本番エンドツーエンド試験は実行していません。再現時にプラン、ライブラリ版、取引時間、ret/trace、結果を記録してください。
一次資料
導入前に再現する項目
- 握手、購読応答、心拍、最終相場時刻を別々に監視します。休場時に心拍が正常でも新約定があるとは限りません。
- 非対応コードと枠超過を試し、要求・受理数を比較してからネットワーク障害と判断します。