はじめに
前回はNode.jsの基本について説明しました。今回も引き続きWindows Azureから少し離れて、Node.jsのHTTPモジュールを中心に説明していきます。
対象読者
今回の対象読者は以下の通りです。
必要な環境
Node.jsの実行環境として以下を利用します。
- Windows Azure SDK for Node.js
HTTPサーバ
前々回では、Windows AzureでNode.jsを動作させるために簡単なHTTPサーバの実行例を紹介しましたが、HTTPサーバの作成から、リクエストイベントの登録、リッスンまでを1行で同時に行っていました。ここで紹介するリスト1は基本的に同じ動作ですが、解説するために細かく処理を分離して記述した例です。
//(1)HTTPモジュールの読み込み var http = require('http'); //(2)HTTPサーバの作成 var server = http.createServer(); //(3)requestイベントの登録 var listener = function(request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }; server.on('request', listener); //(4)サーバの起動 server.listen(8124); console.log('Server running at http://127.0.0.1:8124/');
処理の流れを説明します。
(1)は、Node.js標準のHTTPモジュールを読み込みます。HTTP関連のAPIはHTTPモジュールで提供されています。
(2)は、http.createServerメソッドを呼び出し、http.Serverオブジェクトを生成します。
(3)は、http.Serverオブジェクトに、requestイベントを登録しています。requestイベントはクライアントからのコネクションの度に生成され、http.ServerRequestオブジェクト、http.ServerResponseオブジェクトを受け取ります。これらのオブジェクトの詳細については後述します。また、requestイベント以外にも、http.Serverオブジェクトが発行するイベントはいくつかあり、それらを下表に示します。
イベント名 | 発生タイミング |
request | クライアントからのリクエスト時 |
connection | 新しいTCPストリームが確立された時 |
close | サーバがクローズした時に生成 |
checkContinue | HTTPのExcept:100-continueリクエストがある時 |
upgrade | HTTPヘッダにUpgradeヘッダがある場合 |
clientError | クライアント接続がエラーになった時 |
(4)最後に、listenメソッドにポート番号を指定して、サーバを起動します。