【问题标题】:problems piping in node.jsnode.js 中的管道问题
【发布时间】:2012-06-21 10:10:48
【问题描述】:

我们在 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 中的请求并将其发送到 127.0.0.1:8083 中的虚拟服务器(始终返回 200 OK 状态码)。

当我们之前有一个异步模块时(在本例中为 setTimeOut 时间),问题出在输入流(可读)和输出流(可写)之间的管道中。管道不起作用,并且没有任何内容发送到 8083 端口中的虚拟服务器。

也许,当我们在管道调用之前进行异步调用(在本例中为 setTimeOut)时,输入流会变为“不可读”状态,而在异步调用之后,管道不会发送任何内容。

这只是一个示例...我们使用来自 node.js 社区的更多异步模块对其进行测试,结果相同(ldapjs 等)...

我们尝试通过以下方式修复它: - 请求.可读=真; //在管道调用之前 - request.pipe(proxy_request, {end : false}); 结果相同(管道不起作用)。

有人可以帮助我们吗?

【问题讨论】:

  • 管道绝对可以在节点中工作。我在我自己的项目中的几个地方使用它们。在流的节点文档和请求模块文档中有很好的示例说明如何使用
  • 你我肯定有同样的问题:stackoverflow.com/questions/11182725/…

标签: javascript node.js pipe


【解决方案1】:

我相信这适用于 0.8.0。我没有在 0.6.11+ 中尝试过

【讨论】:

  • 我会在 0.8.0 中测试它。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-19
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
相关资源
最近更新 更多