11.6.2 relayService
送り側(左側)のウェブアプリから受け側(右側)のウェブアプリへ情報を送りたいとします。 両者を直接つなぐのが早そうに見えます。 これは、ピアツーピア通信と呼ばれる方式です。
ところが、そう簡単ではありません。 ウェブアプリは、サーバであれブラウザの乗ったPCであれ、インターネット上のコンピュータにURLでアクセスして初めて通信できます。 そして、通信の相手が個人のPCやスマートフォンだと、そのURLでアクセスすること自体が難しいのです。
一方、あらかじめ用意されたウェブサーバになら、URLで確実にアクセスできます。 そこで登場するのがrelayServerです。 下図のように、relayServer(Web Socket Relay Service)を介してウェブアプリ同士が通信します。
relayServerは、特定のウェブサイトの固有名ではありません。 「ウェブアプリ間でリアルタイム性の高いデータのやり取りを仲介する」という機能を持つウェブサイトを指す抽象的な呼び名で、SNSやブログが特定のサービス名ではないのと同じ位置づけです。 この種のサイトは、pub/sub servicesと呼ばれることもあります。
relayServerの内部は、トークン(ユーザーやシステムごとに割り当てられるランダムな文字列)ごとに区切られたスペース(図の濃い青色の部分)に分かれます。 そのスペースの中には、いくつものチャンネル(図の茶色の部分)を置けます。
通信できるのは、同じトークンと同じチャンネルにアクセスしたウェブアプリ同士だけです。 図ではウェブアプリが2つつながっていますが、つなげられる数に制限はありません。 イメージとしては、チャットスペースに近いものです。