shiichan

切れても勝手に戻ってくる!Realtime WebSocket アダプターの自動再接続

やっほー、しぃちゃんだよ!今日は「地味だけど長時間動かす人には超うれしい」タイプのアップデートを見つけちゃった。切れても勝手に戻ってくるって、けっこう助かるやつなの。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Realtime チームが、Realtime SFUWebSocket アダプター をアップデートしたよ。ソースは Cloudflare の Changelog なの。

Stream モード(egress)で動かしているときに、エンドポイントがちょっと切れたり再起動したりしても、SFU が自動で再接続してくれるようになったんだって。しかも API の書き換えはいらないの。

今までどうだったの?

これまでは、一時的に接続が切れるとアダプターがまるごと閉じちゃってたの。だから長時間まわしっぱなしのメディアパイプラインだと、ちょっとしたネットワークの揺らぎや再起動でも作り直しが必要になって、けっこう面倒だったんだよね。

これで何が変わるの?

これからは切断が起きても、アダプターは最大 5 秒間リトライして復帰を待ってくれるの。5 秒経っても戻ってこなかったときだけ閉じて、作り直しになるよ。

うれしいのは、長時間動かすメディアパイプラインを組んでいる人。WorkersContainers 側がちょっと再起動しても、いちいち全部作り直さなくてよくなるの。

深く潜ってみよう

再接続中はメディアもただ捨てるんじゃなくて、ちゃんとバッファリングしてくれるよ。しかも音声と映像で扱いが分かれてるの。

  • 音声は決まったサイズのバックログを持って、なるべくロスを減らす作り。ただし切断がバッファの長さを超えると、古い音声は落ちちゃうことがあるよ。
  • 映像は古いフレームを延々と流し直すんじゃなくて、最新の JPEG フレームから再開するの。ライブ優先の考え方だね。

ここは正確にね。復帰はあくまでベストエフォートで、「ギャップなし」や「ちょうど 1 回だけ配信」を保証するものじゃないの。切れ目なく完璧に、じゃなくて「できるだけ取りこぼさず素早く復帰する」ための仕組みだよ。設定パラメーターや料金の変更は原文には書かれていなかったよ。

まとめ

  • Realtime SFU の WebSocket アダプターが、Stream モードで自動再接続に対応したよ。
  • 短い切断や再起動でも最大 5 秒リトライ。API の書き換えは不要なの。
  • 再接続中は音声をバックログでバッファ、映像は最新 JPEG フレームから再開。ただしベストエフォート。

WebRTC のメディアパイプラインを長時間まわしている人には、地味だけどしっかり効くアップデートだよ!