WebSocket close code / retry boundary

close codeごとのretry境界を分ける

1000、1001、1006、1011と未知値を固定例で確認し、再接続・待機・調査・停止の次の対応を判断します。実際の接続は開かず、通信・保存・送信を行いません。

5つのclose code境界

close codeは「必ずretryする命令」ではありません。接続の所有者、再試行の条件、ユーザーへ示す次の行動を分けて記録します。

1000 = normal / 1006 = abnormal / unknown = stop and inspect
unknown
code意味次の対応
1000Normal Closure通常終了。自動retryせず、ユーザー操作や仕様上の再開条件を待つ。
1001Going Away相手またはページが離脱。復帰・再接続条件を確認してからretryする。
1006Abnormal Closure異常切断。必要性を確認し、backoff付きの限定retryと観測を行う。
1011Internal Error相手側の処理異常。無限retryせず、上限付きretryと原因調査へ進む。
未知の値自動retryせず、受信値・仕様・実装を確認して停止する。

安全な判断の順番

  1. close codeと、切断を検知した所有者を記録する。
  2. 通常終了か一時的な失敗かを分け、retry条件を明示する。
  3. retryする場合もbackoffと上限を決め、無限ループを避ける。
  4. 未知値は推測せず、fail-closedで調査へ戻す。

このページは合成caseだけを扱います。WebSocket接続、再接続、外部通信、保存、分析は行いません。

5つの固定case

case固定値判断
normal-close-10001000通常終了、retryしない
going-away-10011001復帰条件を確認してからretry
abnormal-close-10061006backoff付きで限定retry
server-error-10111011上限付きretryと原因調査
unknown-close-codeunknown自動retryせず停止して調査