Node.jsを使って簡単なWeb Serverを作ってみた際のメモ。

今回使うNode.jsのバージョン

$ node -v
v0.10.32
1
2

Web Serverオブジェクトの準備

Node.jsにはWeb Serverの機能を備えたオブジェクトが用意されている

var http = require('http');
var server = http.createServer();
1
2

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();
});
1
2
3
4
5

ここでリスナーとして指定するコールバック関数は以下の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');
1

コードの全体像

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...');  //起動時のメッセージ
1
2
3
4
5
6
7
8
9

Web Serverの起動と確認

$ node web.js 
server listening...
1
2

Web Serverを起動したらブラウザで確認する

{% img /images/nodejs/web_server/hello_world.png %}

簡単なWeb Serverの完成

参照

Last Updated:
Contributors: sojiro14