node.js write http response to stream

i'm fetching some binary data over http. My code looks like:

var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
    res.socket.pipe(writeStream);
});

now the output file is created but the filesize is 0. The url is correct though, i verified that with wget.

Thanks in advance & best regards

The callback for http.request only supplies one argument, which is a reference to the response of the request. Try

http.request(url, function(res) {
    res.pipe(writeStream);
});

Also note that the ClientResponse implements ReadableStream, so you should use .pipe rather than .socket.pipe.

I'm assuming that here request is from mikeal's request library rather than being an instance of http.request. In that case you can simply do request(url).pipe(writeStream);

Remember that for debugging purposes, you can always pipe to process.stdout.

var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
  writeStream.pipe(res);
  writeStream.on('end', function() {
    //res.end({"status":"Completed"});
  });
});