Socket hangup while posting request to Node-http-proxy Node.js

Tareq Salah picture Tareq Salah · Oct 29, 2014 · Viewed 14.2k times · Source

I'm working in Node.js Project and I want node to act as a proxy for solr

For proxy: I used Node-http-proxy. the problem is that proxy work excellent in case of get requests but in case of post requests it results in socket hang up exception

Here is a sample of my node code

var express = require('express');
var router = express.Router();

var http = require('http');
var httpProxy = require('http-proxy')

var proxyOptions = {
  host: "127.0.0.1",
  port: 8983
};
var proxy = httpProxy.createProxyServer(proxyOptions);

// It works excellent in GET request
router.get('/solr/*', function(req, res) {
  proxy.web(req, res, {
    target: 'http://' + proxyOptions.host + ':' + proxyOptions.port
  });
})

// the socket hang up in post request
router.post('/solr/*', function(req, res) {
  console.log('Post Request');
  proxy.web(req, res, {
    target: 'http://' + proxyOptions.host + ':' + proxyOptions.port
  });
})

And this is the error after some time in node console

Error: socket hang up
    at createHangUpError (http.js:1476:15)
    at Socket.socketOnEnd [as onend] (http.js:1572:23)
    at Socket.g (events.js:180:16)
    at Socket.emit (events.js:117:20)
    at _stream_readable.js:943:16
    at process._tickCallback (node.js:419:13)

Any suggestions about the cause of the problem

Answer

Ricky picture Ricky · Jan 22, 2015

Use a callback to listen for the error:

proxy.web(req, res, { target: 'http://mytarget.com:8080' }, function(e) { ... });

from https://github.com/nodejitsu/node-http-proxy