by shigemk2

当面は技術的なことしか書かない

WebSocket

WebSocket - Wikipedia

コンピュータ・ネットワーク用の通信規格の1つ。

Ajaxは、ブラウザ側からサーバにデータの送信要求を出すだけで、
サーバ側からクライアントにデータをプッシュ配信することが難しい。

またCometではサーバ側からのプッシュ配信が可能なものの、
多くの実装では擬似的に双方向通信を行うため通信が発生するごとに
TCPのハンドシェイク手続きを再度行う必要がある。
つまり通信ごとにコネクションが切られるので、ロスが大きくなりがちである。

しかし、WebSocketでは、サーバとクライアントが
一度コネクションを行った後は、必要な通信を全てそのコネクション上で
専用のプロトコルを用いて行う。つまり常時サーバからクライアントへ
配信が可能になる。そのため、リアルタイムの双方向通信が可能になる。

メリットとして、

  • 新たなコネクションを張ることがなくなる
  • HTTPコネクションとは異なる軽量プロトコルを使うなどの理由により通信ロスが減る
  • 一つのコネクションで全てのデータ送受信が行えるため同一サーバに接続する他のアプリケーションへの影響が少ない

などなど。

XMLHttpRequest(Ajax)の欠点を解決する技術として開発された。
元々はHTML5の仕様の一部として策定が進められていたが、
後にHTML5からは切り離され、現在は単独のプロトコルとして規格策定作業が進められている。
Node.jsでこの技術が使えるが、単独のプロトコルになったことで、phpperlなどCGIでの利用も
可能になりつつあるらしい。