実現したいこと
私はGoのpionというWebRTCパッケージを使って動画音声通信サービスを作りたいと考えています。
https://sub.folks-chat.com
発生している問題・分からないこと
以下のような状況でWebRTC通信が失敗します、改善点を教えてください。
サンプルコードとして上がっていたpion/example-webrtc-applicationsのsfu-wsに対して修正を入れてWebへデプロイしたところどうしてもICE connection state: new => checking => disconnected
となり、動画通話が実現できません。(ローカル環境では動画通話に成功しました)
修正した箇所は以下です
- PeerConnectionの作成時の設定にTURNサーバとSTUNサーバを追加
- TURNサーバ: expressturnで発行したアカウント情報を利用
- STUNサーバ: stun:stun.l.google.com:19302
- 上記2つの設定でTrickle ICEのTypeはhost->srflx->Done->relayと遷移する
- (dockerコンテナ化するためにindex.htmlをembedする)
- index.html内のwebsocketのプロトコルを
ws
からwss
に変更 - sfu-wsアプリケーションの前にnginxを配置
- Lets Encryptで取得した証明書をnginxに設定しhttps通信化
- Google CloudのVMインスタンスにdockerをインストールしデプロイ
上記の構成はhttps://sub.folks-chat.com/で公開しています(上述の通りWebRTCは実現できていません)。
修正後のコードは以下です。
全てpion/example-webrtc-applicationsをfolkして作っていますので、変更点は以下の2つのコミットを見るとわかりやすいかと思います。
修正点をご教示いただければ幸いです。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
pionのIssueやstackoverflowで既存の問題を調べるとSTUNおよびTURNサーバを設定せよ、等の回答が目立ち、それ通りに実施しても成功しなかった。
pionのslackのルームで広く質問しても解決に至る回答は得られなかった。
補足
特になし

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。