WebRTCシグナリング
役割
WebRTCのSDPオファー/アンサー・ICE候補交換
実装言語
Rust(Axum フレームワーク)
シグナリング
WebSocket経由でSDP・ICE候補を交換
ルーム管理
Valkey でセッションを一時保存(TTL付き)
DataChannel
WebRTC DataChannelでP2P ファイル直接転送
フロー
- 送信者が合言葉でルーム作成 → Valkey に記録(
POST /v1/files/watchword) - 送信者が WebSocket で
create、受信者がjoin - 送信者が SDP offer を作成・送信 → サーバーが受信者へ中継(A3)
- 受信者が SDP answer を返送 → サーバーが送信者へ中継
- 双方が ICE candidate を交換 → サーバーが中継
- SDP + ICE 交換完了 → WebRTC DataChannel で P2P 転送開始