なぜエラーが発生したのかその理由を記述しなさい。
server.close()で新規リクエストを受け付けない状態にしたところに、 再度リクエストが来て、エラーになっていると予想してログを入れた。
var http = require('http');
server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
console.log(req.url);
server.close();
});
server.listen(8080, 0, function () {
console.log('Server running at http://localhost:8080/');
});
server.close()呼び出し後に、再度favicon.icoのGetリクエストが来ていることを確認したので、 server.close()をconnectionイベントで呼ぶように修正して、エラーは出なくなったが、終了しない。 1回目のリクエストが切断されていないことに気づき、response送信後にreq.connection.end()で コネクションを切断して正常に動作するようになった。
エラーが発生していた原因は、server.close()で新規リクエストを受け付けない状態にした後に 再度リクエストが来て、server.close()が呼ばれたため。 さらにAくんの希望どおり、1回リクエストがきた後にサーバを終了するためには、1回目のコネクションを終了させなければいけない。
このプログラムを修正してエラーが発生せずA君がやりたかったプログラムを作りなさい。
var http = require('http');
server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
req.connection.end();
});
server.on('connection', function() {
server.close();
});
server.listen(8080, 0, function () {
console.log('Server running at http://localhost:8080/');
});