Open2

nest: そもそもService worker → WebRTC proxyなんて可能なのか問題

okuokuokuoku

やりたいこと: 野良httpsサーバーの代わりにWebRTCサーバーを使ってhttpsサイトをp2pで提供したい

これができると、ngrokのようなサービスを利用しなくても簡単にhttpsサイトのローカルテストができて嬉しい。Unity WebGLとかビルドがでかくて転送時間がバカにならんからね。。

こんなの誰でも思いつくので、その辺に実装が無いということは、何か難しいポイントがあるんではないだろうか。

okuokuokuoku

思いつくフロー

普通に考えると、WebRTC自体をservice worker(Web worker)で使えないあたりが壁になるんではないだろうか。つまり、WebRTCのパケット送受信自体はメインスレッドにさせる必要がある。

  1. ページがロードされたら一旦service workerは素通しにする
  2. service workerを更新する
  3. WebRTCセッションを張る
  4. service workerからのリクエストを onmessage で受けてWebRTCに中継できるようにする
  5. <iframe> を全面に張って、service workerにページをロードさせる

リロードしたらWebRTCセッション切れちゃうもんね。。いわゆる index.html はURL部分のフラグメントを見て自分が

  • 初期ロード
  • WebRTCセッションを張ったWindow
  • Webアプリがロードされるiframe

のいずれなのかを検出することになる。。?