ロロの空想

心に移りゆくよしなしごとを書いていくよ!

チャットサービス作るための双方向通信(WebsocketとCommet)とは何なのだろうか

 

チャットサービスを作ったことがなくて、どうしたらリアルタイムに投稿したコメントが反映されるのだろうかと不思議だった。

これまで、Ajaxとかの使い方は勉強したことがあっても、情報を更新するためには、一定期間おきにサーバーにリクエストを出さなくてはいけなかった。

投稿をリアルタイムに反映するとすれば、それこそ、1秒おきにリクエストを送信しなくてはならない。

そんな通信が果たして現実なのか…と、チャットサービスの作成については懐疑的であった。

 

そこで、ネットで検索すると、双方向通信のための技術として、CommetとWebsocketが有名であることがわかった。

ほかにも色々あるみたいだ。

 

qiita.com

 

ja.wikipedia.org

ja.wikipedia.org

 

qiita.com

Websocket実現のためのライブラリは、WikipediaのWebsocketを見てもらうと、Githubへのリンクがある。

 

WebsocketはHTTPの上にあるのか?TCPの上になるのか?

上記記事では、「HTTPによるハンドシェイクで双方向通信を確立する」とあるので、通信のはじめにHTTP通信を行うことはわかるのだが、そのあとの双方向通信自体が、HTTPの拡張形式としてのWebsocketプロトコルなのか、あるいは、もはやHTTPとは関係なく通信を行うTCP上にあるWebsocketプロトコルなのか、がよくわかっていない。

 

でもWebsocketはつねに通信を張りっぱなしにするため、Blocking I/Oのサーバーでは難しいと…つまり、Non-Blocking I/Oな、node.jsか、Nginxじゃないと厳しいということか。