常に同じテキストファイルを返す、HTTP のサーバを書いてください。
サーバは最初の引数で供給されているポートをリッスンするサーバです。
二つ目の引数は、返すテキストファイルのパスです。ファイルを返すためは fs.createReadStream()
を使わないといけません。
今回は HTTP 専用サーバになりますので一般的な TCP サーバより Node.js の http
コアモジュールを使った方がよいです。 net
モジュールと同じく http.createServer()
関数があります。たたそのサーバが受信するのは HTTP
リクエストです。
http.createServer()
の第一引数であるリスナー関数は毎コネクション時に呼ばれます。
一般的なHTTPリクエストリスナー関数の例:
function listener (request, response) { /* ... */ }
上記の例の二つの引数は HTTP
のリスナーにおける代表的なものです。第一引数の request
には HTTP のプロパティが入ります。例えば:ヘッダーやクエリ文字列。第二引数の response
はクライアントにヘッダーやボディを返す為のオブジェクトです。
request
や response
は Node.js における Stream です!Stream なので、他の Stream 由来のシステムとの送受信にうってつけです。
http.createServer()
はあなたのサーバのオブジェクトを返します。ポートをリッスンするためにサーバオブジェクトの server.listen(portNumber)
を呼んでください。
一般的な Node.js の HTTP サーバはこのように記述されています:
var http = require('http')
var server = http.createServer(function (req, res) {
// request handling logic...
})
server.listen(8000)
http
モジュールのドキュメントはブラウザーでこのリンクを見てください:
/node_apidoc/http.html
fs
と言う Node.js のコアモジュールにはファイルを stream できる API があります。コマンドラインの第二引数(テキストファイルへのパス)を fs.createReadStream()
に渡すとそのファイルを表す Stream オブジェクトがもらえます。その Stream は src.pipe(dst)
を使って src
の Stream を dst
の Stream に繋げることができます。このようにファイルのデータ Stream は HTTP のレスポンス Stream に繋げられます。