node.js中的管道问题

时间:2012-06-21 10:10:48

标签: javascript node.js pipe

我们在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}); 结果相同(管道不起作用)。

有人可以帮助我们吗?

1 个答案:

答案 0 :(得分:0)

我认为这适用于0.8.0。我没有尝试0.6.11 +