2つのWebページ間でメッセージングを行う手段を簡単に整理してみた
とあるものを作るために、Webページ上でメッセージングを行う方法を簡単に整理してみました。
例えば Webページ A で操作を行うと、メッセージが飛んでWebページ B に変化を起こせる、みたいなイメージです。
理想形
こちらが理想形ですが、これを全部満たすものはまだ無いと思います。
中継サーバを新しく建てる、あるいは中継用のサービスを契約する必要が無い
ローカルにメジャーなWebブラウザ以外のアプリをインストールする必要が無い
XPCOMみたいな非推奨ものは使わない
人力は無しで
二台以上のPCでメッセージングを行える
ブラウザはChrome(CEF含む)に限定
Webページのオリジンは同一という前提でOK
WebSocket+PieSocket みたいな中継サーバ
PieSocket みたいなサービスを使えば、簡単にメッセージングを実現できます。理想形からは外れていますが、王道パターンではあると思います。ちなみに、PieSocket は WebRTC のシグナリングサーバとしても使えます。
中継サーバ・サービス/必要
ブラウザ以外のアプリ/不要
非推奨もの/不要
人力/不要
二台以上のPCでメッセージング/できる
WebRTC+SDP を手動で交換
ローカルSDPを生成して、その文字列を手動で交換すればP2P通信ができます。WebRTCはテキストも送れます。
ただ、手動で交換と書いてあるように、人力感がはんぱではないです。
中継サーバ・サービス/不要
ブラウザ以外のアプリ/不要
非推奨もの/不要
人力/必要
二台以上のPCでメッセージング/できる
BroadcastChannelでメッセージを送信
同一オリジンかつ同一ブラウザなら使える方法です。
ただし、同じChrome系列であっても、プロセスが独立しているもの、例えばChromeとChromiumを同時に起動した場合は、同じオリジンであってもアプリの壁を越えてメッセージは飛ばないんじゃないでしょうか。ここは要検証。
中継サーバ・サービス/不要
ブラウザ以外のアプリ/不要
非推奨もの/不要
人力/不要
二台以上のPCでメッセージング/できない
Firebase の Cloud Firestore
王道なやり方です。データを永続化する+更新通知をメッセージングとしても使えます。
中継サーバ・サービス/必要
ブラウザ以外のアプリ/不要
非推奨もの/不要
人力/不要
二台以上のPCでメッセージング/できる
まとめ
理想形がわがまますぎるので、その通りのものは無いんですが、やっぱり純粋にメッセージングがしたいなら PieSocket みたいなものを使う、そこに永続化が欲しいなら Cloud FireStore を使う、になっちゃうんでしょうかね。