見出し画像

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 を使う、になっちゃうんでしょうかね。


この記事が気に入ったらサポートをしてみませんか?