Skip to content

Instantly share code, notes, and snippets.

@noda-sin
Created November 23, 2012 02:45
Show Gist options
  • Save noda-sin/4133802 to your computer and use it in GitHub Desktop.
Save noda-sin/4133802 to your computer and use it in GitHub Desktop.
第1回Node.js入門勉強会 レポート課題
var http = require('http');
server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
req.socket.end();
});
server.on('connection', function(socket) {
server.close();
});
server.listen(8080, 0, function () {
console.log('Server running at http://localhost:8080/');
});
■課題1 なぜエラーが発生したのかその理由を記述しなさい。
server.close()により、A君は最初のrequest以後のものを受け付けないようにしようとしたが、
server.close()するよりも先に2つ目のrequestに対するhttp requestイベントの発火の方が早いがため、
すでに閉じられたserverに対してserver.close()が実行され、throw new Error('Not running')のエラーが
発生している。
ブラウザによっては、favicon取得のrequestを通常のrequestと同時に投げるために起こる現象と考えられる。
■課題2 このプログラムを修正してエラーが発生せずA君がやりたかったプログラムを作りなさい。
上記のことを踏まえた上で、2つ目のrequestが到着する前にserver.close()する。
また、それだけではダメで、コネクションを切ることを明示的に行わなければならない。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment