2018/09/19追記
RFC 8441 として標準化されました
以前書いたとおり、Websockets over HTTP/2の仕様である「Bootstrapping WebSockets with HTTP/2」が現在標準化が進められている。
asnokaze.hatenablog.com
これにより、複数のWebsocket通信が1つのTCPコネクションに束ねられる。
一つのページで複数WebSocketを使っていたり、複数タブを開いて各ページでWebSocketを利用しているとどうしてもコネクションの本数が多くなってしまう。様々なメリットがあるが、コネクションの数がへらせるのはサーバ側でも嬉しい部分がある。
もちろんひとつに束ねられたWebSocketをばらして処理をする必要があり、サーバやProxy側の実装が整う必要はある。
さて、このWebsockets over HTTP/2にChrome Canaryが対応したので実際に試してみる。
WebSockets over HTTP/2
「WebSockets over HTTP/2」の概要に簡単に触れる
WebSockets over HTTP/2を利用するにはサーバ側からSETTINGSフレームで「ENABLE_CONNECT_PROTOCOL = 1」を送る必要がある。そのため、既存のサーバに対してブラウザが勝手にHTTP/2でWebScoket通信を試みるようなことはない。
具体的な通信手順は以前書いた時より仕様が進んでおり、HEADERSフレームを使用するようになっている。