Node.jsを使ってWeb Serverを作ってみました
Node.jsを使って簡単なWeb Serverを作ってみた際のメモ。
今回使うNode.jsのバージョン
$ node -v
v0.10.32
Web Serverオブジェクトの準備
Node.jsにはWeb Serverの機能を備えたオブジェクトが用意されている
var http = require('http');
var server = http.createServer();
Nodeの http
モジュールを読み込んだ後、 createServer()
メソッドでWeb Serverオブジェクトを取得できる
requestイベントの追加
取得したServerオブジェクトのリスナーとして、requestを受けたときに発火するrequestイベントを追加する
リスナーの追加には emitter.on(event, listener)
という形式のメソッドを使う。今回はeventに 'request'
を指定する。
server.on('request', function(request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.write('Hello World.');
response.end();
});
ここでリスナーとして指定するコールバック関数は以下の2つの引数を受ける
- requestの内容をもつ
http.IncomingMessage
クラスのインスタンス - responseの内容となる
http.ServerResponse
クラスのインスタンス
response.writeHead(statusCode, [reasonPhrase], [headers])
responseのHeadを規定するメソッド
response.write(chunk, [encoding])
responseのbodyを規定するメソッド。 chunk
に文字列を指定した場合は第二引数にencodingを指定することができる。デフォルトはUTF-8。
response.end([data], [encoding])
serverにresponseの完了を通知するメソッド。responseの終了時に必ず呼ばなければならない。
接続を受け入れる
ポートとホスト名を指定してWeb Serverへの接続を受け付ける
server.listen(1337, 'xx.xxx.xxx.xxx');
コードの全体像
``` javascript web.js var http = require('http'); var server = http.createServer(); server.on('request', function(request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.write('Hello World.'); response.end(); }); server.listen(1337, 'xx.xxx.xxx.xxx'); console.log('server listening...'); //起動時のメッセージ
## Web Serverの起動と確認
``` bash
$ node web.js
server listening...
Web Serverを起動したらブラウザで確認する
{% img /images/nodejs/web_server/hello_world.png %}
簡単なWeb Serverの完成