Web Socket

ウェッブというと、どうしてもChromeのようなウェブブラウザーをおもいうかべてしまう。ひつようにおうじて、つぎつぎとウェッブページがひらくかんじね。

それにたいして、TwitterもLineも、ひとつの画面にながれていくでしょう。

はたして、これはウェッブなのか? なんとなく、そのことが気になっていたわけ。

それについて、かんがえてみよう。

まずウェッブとはなにか確認しておく。ウェッブの条件は、つぎのとおり。

(1)URLが利用されていること
(2)クライアントとサーバーのあいだでHTTP(プロトコル)が利用されていること
(3)きほんてきにタグ(HTML)で書かれていること。

Lineはわからないけれど、Twitterでは「リンクをツイートにコピー」で(1)と(3)をたしかめることができる。

こういうふうにすればよい。

任意のツイートから「リンクをツイートにコピー」をえらび、そのままブラウザーのアドレスバーにペーストする。アドレスバーにはちゃんとURLが表示される。

そのうえで、表示されたページにカーソルをあわせ、右クリックのあと「検証」を選択すれば、そのページのソースコードをみることができる。タグでちゃんと書かれていますねぇ。

のこるは(2)の「クライアントとサーバーのあいだでHTTPがつかわれているかどうか」である。

こちらは自力の方法ではおもいつかない。なので、しらべてみた。こういうことらしい。

TwitterやLineには、WebSocketという技術がつかわれている。プロトコルはHTTPである。ヘッダー内のWebSocketのリクエストにおうじ、サーバとの接続が維持され、双方向でやりとりできる環境が確立される。そのうえで、ミリ秒単位の任意の間隔でクライアントに情報が送信される(じつは画面は1/1000秒単位でかわっているけれど、ひとの目には切りかわるかんじはわからない。その帰結として、ただただ、おなじ画面にタイムラインやチャットがながれているようにみえる)。

ちなみに、 WebSocketは(サーバーからの)ブッシュ通信であるが、それに対してAJAXは(クライアントからの)プル通信となる。

AJAXは、たとえばGoogleMapにつかわれている。

TwitterやLineがリアルタイムにうごくのにたいし、GoogleMapのばあい、スクロールすると、その周辺が遅れて表示されることがあるでしょう。これは、クライアントからリクエストをだして、そののちサーバーから情報が送られてくるからなんだね。TwitteやLineにつかわれているWebSocketなら、サーバーからの一方通行なのでスムーズなわけ。

たぶん、この説明であっているとおもうけれど、まちがっていたら、どなたかご指摘ください。

気づいたことを、お気軽に。
公開まで、やや時間がかかりまーす!