我们在node.js
中有以下示例var http = require('http');
http.createServer(function(request, response) {
var proxy = http.createClient(8083, '127.0.0.1')
var proxy_request = proxy.request(request.method, request.url, request.headers);
proxy_request.on('response', function (proxy_response) {
proxy_response.pipe(response);
response.writeHead(proxy_response.statusCode, proxy_response.headers);
});
setTimeout(function(){
request.pipe(proxy_request);
},3000);
}).listen(8081, '127.0.0.1');
该示例在127.0.0.1:8081中侦听请求,并将其发送到虚拟服务器(始终返回200 OK状态代码)127.0.0.1:8083。
当我们之前有一个异步模块(在这种情况下是setTimeOut时序)时,问题出在输入流(可读)和输出流(可写)之间的管道中。管道不起作用,8083端口没有任何内容发送到虚拟服务器。
也许,当我们在管道调用之前进行异步调用(在本例中为setTimeOut)时,输入流会更改为“不可读”状态,并且在异步调用之后,管道不会发送任何内容。
这只是一个例子......我们使用来自node.js社区的更多异步模块测试它,结果相同(ldapjs等)......
我们尝试修复它: - request.readable = true; //在管道呼叫之前 - request.pipe(proxy_request,{end:false}); 结果相同(管道不起作用)。
有人可以帮助我们吗?
答案 0 :(得分:0)
我认为这适用于0.8.0。我没有尝试0.6.11 +