遠隔プロトコル · 05
WSSは棋力ではない:KataGo JSONの遠隔経路
Read19の暗号化WebSocketセッションを説明します。各テキストフレームは標準のKataGo Analysis Engine JSONで、探索中にも更新されます。
暗号化された双方向経路へ接続する
クライアントは wss://read19.com/v1/katago/<API_KEY> へ接続します。WSSはTLS上のWebSocketです。パス中のAPI Keyは認証情報なので、ログ、画像、公開例へ残しません。接続後は同じセッションで双方が送信できます。
TLSハンドシェイク後も双方向セッションが残ります。完全なURLをパスワード同様に扱います。 各フレームへKataGo JSONを一つ入れる
要求には一意のidとmoves、initialStones、rules、komi、boardXSize、boardYSize、analyzeTurnsを含めます。探索中の更新にはreportDuringSearchEveryを使い、Read19では0.1〜5秒を指定できます。
WSSは輸送層で、本文はAnalysis Engine JSONです。独自の棋譜形式ではありません。 isDuringSearchで完了を判断する
探索中の応答はisDuringSearch: trueで、候補手やグラフを更新できます。falseがそのidの最終応答です。局面変更時はaction: terminateとterminateIdを送り、接続を保ったまま対象要求だけを止めます。
同じidへ複数の途中状態と一つの最終状態が届きます。terminateはソケット全体ではなく要求を指します。
根拠
実装確認
- API Keyをログへ出さない
- 要求idを一意にする
- isDuringSearchで状態更新する
- 局面変更時に旧idを停止する