Node.js WEBサーバーの基礎コード(?)
var http = require('http'); // httpをロード var server = http.createServer(); // serverオブジェクトの作成 server.on('request', doRequest); // 'request'イベントにdoRequest関数を関連付ける server.listen(8888); // ポート番号8888で待ち受け開始 console.log('Server running!'); // リクエストの処理 function doRequest(req, res) { // ヘッダ情報 res.writeHead(200, {'Content-Type': 'text/plain'}); // ボディ部分 res.write('Hello World\n'); // コンテンツ出力の完了 res.end(); }
require(moduleName)
モジュールを読み込んで利用可能にする
引数
- moduleName <String>
- 読み込みたいモジュール名
http.createServer([requestListener])
http.Serverオブジェクトを作成し、返す。
Node.jsの「サーバー」の部分
emitter.on(eventName, listener)
イベントハンドラを登録する
イベントハンドラに与えられる引数はイベントに応じて異なる。
引数
- eventName <String>
- イベント名
- listener <Function>
- 組み込む関数(処理)。イベントハンドラとして使用する関数
'request'イベントにdoRequest()関数を関連付けている。
クライアントからのリクエストの処理を行う
イベントハンドラの説明=>https://mag.osdn.jp/13/03/18/0939236/3
server.listen([port][, hostname][, backlog][, callback])
サーバーの待ち受けを開始
引数
- port <Number>
- ポート番号
listen()関数はポート番号を指定する と覚えておく。
doRequest()内の処理
'request'イベントの場合は、イベントハンドラには2つの引数が渡される。
doReqest(request, response)
- request
- クライアントからのリクエストに関する機能
- response
- サーバーからクライアントへ送るレスポンスに関する機能
この2つの引数を使って処理していく。
response.writeHead(statusCode[, statusMessage][, headers])
ヘッダー情報をレスポンスに書き出し
response.end()が呼び出される前に呼び出すこと。
引数
- statusCode
- 3桁のHTTPステータスコード
- headers
- レスポンスヘッダー情報の連想配列
今回は、「このコンテンツは標準出力ですよ」ということがクライアントに送られる。
response.write(chunk[, encoding][, callback])
ボディとなる部分のコンテンツの書き出し
何回でも.write()は呼び出せる
response.end([data][, encoding][, callback])
コンテンツの出力の完了
レスポンス処理の終わり
「writeHead」 「write」 「end」 の3つがあればクライアントへ返答できる
参考サイト
Node.jsのスクリプトの基本を覚えよう(1/5):ビギナーのための Node.jsプログラミング入門
Node.jsのスクリプトの基本を覚えよう(2/5):ビギナーのための Node.jsプログラミング入門
Node.js 指定した時間が経過したら関数を実行する。
環境
OS: Windows10
Node.js: v6.9.4
setTimeout <時間が経過したら関数を実行>
- setTimeOutの公式ドキュメント
- 指定した時間が経過したら指定した関数を実行する。
// test0.js setTimeout(function() { console.log('good mornming!'); }, 1000);
test0.jsの出力結果
good morning!
実行から1000ミリ秒後に 'good morning!' と表示される。
setTimeout(callback, delay[, ...args])
引数
- callback <Function>
- 時間が経過したときに呼び出す関数
- delay <number>
- callbackを呼び出す前に待機する時間(ms)
- ...args <any>
- callbackを呼び出すときに渡すオプションの引数
処理
- delayで指定したミリ秒後に1度callbackの関数を呼び出す。
- 正確な時間(ms)ではない。できるだけ近い時間(ms)になっている
- delay > 2147483647 or delay < 1 の時はdelayは1が設定される。
- callbackが関数ではないときは TypeErrorがスローされる。
2つsetTimeout()を書いてみる
// test1.js setTimeout(function() { console.log('good mornming!'); }, 1000); setTimeout(function() { console.log('hello!'); }, 500);
test1.jsの出力結果
hello! good morning!
Node.jsは非同期処理のため、 'hello!' が先に表示されてしまう。
順番に上から処理をしたい場合は asyncモジュールで定義されている関数を使うと良い。
メモ:java charをintに変換
Character.getNumericValue();
を使う
char c = '2';
int a = Character.getNumericValue(c);
System.out.println(a + 3);
**出力**
5
参考サイト