WebSocketに触れてみる

chakemiです。週末ってことで軽く酔っ払っております。

今日は最近話題(?)のWebSocketに触れてみたいと思います。

構築環境

  • CentOS5.5

WebSocketに触れてみるといったものの通信規格でしかないので、クライアントはプロトコルに対応しているchromeあたりでいいとしてサーバー側をどうしようかと悩みましたが、流行ってそうなnode.jsとwebsocket-serverパッケージを使用したいと思います。

インストールに必要なパッケージを入れます。

1
2
3
[root@localhost ~]# yum -y install gcc-c++
[root@localhost ~]# yum -y install openssl-devel
[root@localhost ~]# yum -y install curl

node.jsをインストールします。

1
2
3
4
5
6
7
8
9
[root@localhost ~]# wget http://nodejs.org/dist/node-v0.4.11.tar.gz
[root@localhost ~]# tar zxvf node-v0.4.11.tar.gz
[root@localhost ~]# cd node-v0.4.11
[root@localhost node-v0.4.11]# ./configure

Checking for header port.h               : not found
Checking for header ['sys/types.h', 'sys/event.h'] : not found
Checking for function kqueue                       : not found
Checking for header sys/eventfd.h                  : not found

※ここで4つほど足りないヘッダーファイルが出てきますが華麗にスルー。(4つ以上でるようだったら何かが足りないです)

1
2
[root@localhost node-v0.4.11]# make
[root@localhost node-v0.4.11]# make install

無事、インストールが完了したことを確認するために、バージョン確認のコマンドを打っときます。

1
2
[root@localhost node-v0.4.11]# node -v
v0.4.11

次に、Node Package Managerのインストールをします。

1
2
3
[root@localhost ~]# curl http://npmjs.org/install.sh | sh
[root@localhost ~]# npm -v
1.0.27

npmを使ってwebsocket-serverをインストール

1
2
[root@localhost ~]# npm install websocket-server
[email protected] ./node_modules/websocket-server

これで準備は完了です。

では、簡単な処理を試してみたいと思います。

どちらもJavaScriptでコーディング出来るって利点がありますが、そもそも自分はJavaScriptなんて書くことないんでメリット感じません。。。

node.jsは対話型の評価環境を提供しているということで、node.jsのプロンプトを起動します。

1
2
[root@localhost ~]# node
>

あとはここにスクリプトを入力し、実行します。

1
2
3
[root@localhost ~]# node
> var sys = require('sys');var ws = require('./node_modules/websocket-er');var server = ws.createServer();server.addListener("connection", tion(connection) {sys.puts("connect");connection.addListener("message", tion(message){sys.puts(message)});});server.addListener("close", tion(connection) {sys.puts("close");});server.listen(8000);
>

これで、コネクション接続準備が出来ましたので、chromeのJavaScriptコンソールを開いて、サーバに接続してみます。

1
var connection = new WebSocket("ws://192.168.1.xx:8000");connection.onmessage = tion(event) { console.log(event.data) }

接続がうまく出来てれば、サーバ側コンソールに下のように表示されます。

1
> connect

これで、サーバ-クライアント間のWebSocket通信が確立されましたので、通信のやり取りを試してみたいと思います。 サーバ側から接続クライアントへブロードキャストします。

1
server.broadcast('test from Server')

chromeのJavaScriptコンソールに「 test from Server 」と表示されましたw

今度は、クライアント側からサーバへデータを送ります。

1
connection.send('test from Client')

サーバコンソールに「 test from Client 」と表示され成功!

とりあえず、無事接続が確認出来たとこで、簡単なチャットサービスでもつくってみようか検討してみたいと思います。

Comments