気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【読書メモ】パーフェクトJavaScript(サーバーサイド-01)

part6を読んだのでメモ。

パーフェクトJavaScript (PERFECT SERIES 4)

パーフェクトJavaScript (PERFECT SERIES 4)

Node.js

イベントループ

Node.jsでHTTPサーバー処理を行う Node.jsはイベント待ちのコードを書くとスクリプトが暗黙にループに入る。 イベント待ちのコードがなければ、スクリプトの最後まで実行すると、スクリプトが終了する

以下のコード例:

  • listen(8080)で接続待ちのイベントソース(イベントを発生させるオブジェクト)が生成され、 コードの最後で暗黙のイベントループに入る。 ポート番号8080番にHTTPの接続があると、イベントループからコールバック関数が呼ばれる。 コールバック関数の中でHTTPのレスポンス処理をする。 コールバック関数を抜けると、再び暗黙のイベントループに入る。
var http = require('http');

http.createServer(function(request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.write('Hello');
  response.end('World\n');
}).listen(8080);
  • 上記処理を明示的に記載

    • httpdオブジェクトにon関数でコールバックを設定
    • on関数はNode.jsプログラミングで最重要な関数で、イベントに対するコールバック関数をセットする関数
    • on関数は、内部的にはaddListener関数の別名。
  • 1. httpdオブジェクトの'request'イベントにイベントハンドラをセットする

  • 2. httpdオブジェクトの'request'イベントはHTTPリクエストを受けたときに起きるイベント 通常Node.jsではこのようにイベント名でイベントを識別し、イベントハンドラを関連付ける。
  • 3. 前述のコールバック関数も内部的には'request'イベントのイベントハンドラである
var http = require('http');

var httpd = http.createServer();
httpd.listen(8080);

httpd.on('request', function(request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.write('Hello');
  response.end('World\n');
});