WebRTCのエコーアプリを実装して動きを確認したのでメモ
設計概要
PC/スマホ両対応のWebRTCテストアプリ(エコーするだけ)のアプリを実装
フロントエンド
PC/スマホ両対応するためWebアプリとした。Reactで実装し、Firebaseにホスティングした
ほかの人に使われないようFirebase Authenticationを使い、ID作成済みのユーザー以外使えないようにした
UIは以下のような形となった

バックエンド
WebRTCによる音声通信がインターネットをまたぐため、暗号化+UDPポートを利用するため、GCP上にGCEで仮想マシンを構築した
外向きの部分は、グローバルIPを確保し、Let's Encryptで証明書を取得、nginxをプロキシとして動作させた
WebRTCサーバ側はPythonで構築し、Uvicorn+FastAPI+aiortcを使うこととした
バックエンドは外部から叩かれないよう、Firebase Admin SDKを利用して、Firebase Authenticationで発行したTokenをVerifyするようにした。
感想
ネットワークプロトコルとクラウドインフラの両方の勉強になってよかった