6

httpモジュールを使用して、node.jsで単純なサーバーと単純なクライアントを作成しようとしています。サーバーは正常に動作していますが、クライアントは動作していません。バグを見つけるのを手伝ってください...
サーバーは:

var server = require('http').createServer();
server.on('request', function(req, res){
    res.end("hello, world");
});
server.listen(4000);

クライアントは:

var options = {
    host   : 'localhost',
    port   : 4000,
    method : 'GET',
    path   " '/'
};
require('http').request(options, function(res){
    console.log(require('util').inspect(res));
    res.on('data', function(data){
        console.log(data);
    });

node server.jsおよびnode client.jsとして、異なるターミナルウィンドウでそれらを実行しています。

client.js を実行している端末で、約 10 分後に以下のエラーが発生します。

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: socket hang up
at createHangUpError (http.js:1473:15)
at Socket.socketOnEnd [as onend] (http.js:1569:23)
at Socket.g (events.js:175:14)
at Socket.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)

ありがとう !

4

1 に答える 1

11

HTTP ライブラリのrequest()メソッドはリクエストを自動的に終了しないため、リクエストは開いたままになり、タイムアウトします。代わりに、 を使用してリクエストを終了するか、自動的に終了req.end()する メソッドを使用get()する必要があります。

var http = require('http');
var req = http.request(options, function(res) {
  // handle the resposne
});
req.end();

または:

http.get(options, function(res) {
  // handle the resposne
});
于 2013-11-13T17:34:33.713 に答える