WebTransportを試す
WebTransportをAWS環境で動作させるまでの道のり
背景
なにか、尖ったリアルタイム通信がしたいなーと思い立ち、調べていると、AIヒアリングかけるとだいたいこんな感じらしい
純粋なgRPC ー> ブラウザからは直接呼べない
gRPC-Web ー> サーバーからのストリームのみ可
Connect ー> Web開発における現在の主流
WebSocket ー> 古典的だが確実。
とはいえ、事例がすくないものをやるほうが面白いな。ということになり、WebTransportに手を出すことにする。
WebTransportについては以下 https://developer.chrome.com/docs/capabilities/web-apis/webtransport?hl=ja
https://github.com/quic-go/webtransport-go goの実装がここにあったので、これを元にして、実装してみよう。
Webブラウザのチェック
chrome://flags
上記にアクセスして、設定をEnabledにしておく(もしかしたら、この設定をしておけば証明書の発行いらんかった?)

証明書周りの課題
webTransportを実験する際は、localhostであってもhttpsによる通信を行いたいため、mkcertを利用する。また、今回はアプリが直接TLSを処理する必要があったため、証明書をエクスポート可能な環境を用意する。
https://github.com/FiloSottile/mkcert
mkcertでPC内に認証局を用意して、localhostでもhttpsを実現する。
mkcert --install
mkcert localhost
AWS環境では?
let’s Encryptを利用して、証明書を獲得する。 一日1回動くLambdaを用意して、証明書のチェック、更新をおこなう。
ECSアプリケーションをインターネットに接続する。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/networking-outbound.html
本来はNLBとかをたてて、そこを中継するほうが筋がいいんだろうけど、NLBたてるとコストが高いので実験のためにそこまでやるのもなーとなったので、今回はECSを上記の方法でつなげる。 当たり前ですがもっとちゃんとやる場合はNLB使うなりしましょう。
動作確認
ここで疎通確認 https://webtransport.day/

あと気が済んだら消す予定の今回つくったサイト https://wt.muzigen.net:8443/