aMother
aMother

Reputation: 893

Node http.request not working

I am trying to create a simple server and a simple client with node.js using http module. Server is working fine but client is not. Please help me to find the bug...
Server Is :

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

Client Is :

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);
    });

I am running them in different terminal windows as node server.js & node client.js.

I am getting below mentioned error on the client.js running terminal after around 10 mins.

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)

Thanks !

Upvotes: 7

Views: 5785

Answers (1)

hexacyanide
hexacyanide

Reputation: 91609

The request() method of the HTTP library will not automatically end requests, therefore they stay open, and time out. Instead, you should either end the request using req.end(), or use the get() method, which will do so automatically.

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

Or:

http.get(options, function(res) {
  // handle the resposne
});

Upvotes: 13

Related Questions