前回はNode.jsをインストールするまでを行いました。
今回はwebサーバを起動し、簡単なプログラムを起動させます。
Node.jsはapach webサーバやIISというようなwebサーバがなくともサーバサイドのプログラムを実行出来ます。
インストールしたNode.js自身にwebサーバが内蔵されているようです。
なお、環境については前回同様、windows10、ローカル環境で実行します。
ファイルの配置場所
PHP、Javaのようにサーバサイドプログラムではドキュメントルートと呼ばれるサーバサイドプログラムが実行されるディレクトリにプログラムを配置しますが、今回は任意の場所に配置して構いません。
イメージとしては今回作成するプログラムからwebサーバを起動します。
サーバ起動
デスクトップにserver.jsというファイルを作成しましょう。
以下のプログラムを記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; var server = http.createServer(); server.on('request', doRequest); // リクエストの処理 function doRequest(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World\n'); res.end(); } server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); |
プログラム説明
以下にポイントを記載します。
httpオブジェクト
Node.jsは様々な機能をモジュールで提供しています。そのうちの一つ、httpモジュールをロードします。
httpに関する機能をもつモジュールを使用する為にロードします。
1 |
const http = require('http'); |
Node.jsはrequire関数を使用してNode.jsが提供するモジュールを読み込みます。
サーバオブジェクトの作成
ロードしたhttpオブジェクトからserverオブジェクトを生成します。
1 |
var server = http.createServer(); |
リクエスト処理
リクエストが送信された時に起動するイベントを記載します。
1 |
server.on('request', doRequest); |
これはリクエストを受け付けた時にdoRequest関数を呼び出します。
もう少し正確に言うとリクエストイベント’request’が発生するとコールバック関数を呼び出します。
‘request’イベントのコールバック関数は引数として、リクエストとレスポンスを受け取ることになっています。
以下のように定義されます。
1 2 3 4 5 |
server.on('request',関数名); function 関数名 ( リクエスト , レスポンス ){ 処理 } |
レスポンス作成
レスポンスを返すためにヘッダを作成します。
1 |
res.writeHead(200, {'Content-Type': 'text/plain'}); |
レスポンスの内容を作成します。
1 |
res.write('Hello World\n'); |
最後に終了します。
1 |
res.end(); |
プログラムの実行
コマンドプロンプトより、以下を実行して下さい。
Node server.js
すると、以下が表示されます。
Server running at http://127.0.0.1:3000/
このメッセージはserver.jsで記載したものです。
1 2 3 |
server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); |
ブラウザにhttp://127.0.0.1:3000/でアクセスしましょう。
“Hello World” が表示されるはずです。
なお、終了はコマンドプロンプトにて ctr + c です。
以上です。