NodeJS请求管道

时间:2016-02-01 15:45:55

标签: node.js sockets proxy stream request

我正在努力解决技术问题,因为我对NodeJS世界很陌生,我认为我没有适当的良好做法和工具来帮助我解决这个问题。

使用众所周知的请求模块,我正在从远程服务器到客户端创建流代理。几乎一切都很好并且正常工作直到某一点,如果在服务器不再响应的同时有太多请求。 Actualy它确实获得了客户端请求,但无法通过流程处理并提供内容。

我目前正在做的事情:

  1. 使用带有http.createServer
  2. 的http模块创建服务器
  3. 使用exec
  4. 从php脚本获取远程URL
  5. Instanciate the stream
  6. 我是怎么做到的:

    http://pastebin.com/a2ZX5nRr

    我试图调查池中的东西并且不了解所有内容,同样的事情最近添加了池maxSocket,但没有帮助我。我也在http.globalAgent之前设置无限,但我读到这一点不再受nodeJS的限制,所以它没有帮助。 见这里:https://nodejs.org/api/http.html#http_http_globalagent

    我也读过这个:Nodejs Max Socket Pooling Settings但是我想知道自定义代理和全局代理之间有什么区别。

    我相信它可能来自服务器,但我测试的是一个非常小的,一个更大的,它不是来自那里。我认为它绝对来自我的应用程序必须更好的设计。确实,每次我重新启动应用程序实例时,它都会再次运行。此外,如果我正在启动服务器的分支,而另一个不在另一个端口上提供任何服务,它将起作用。所以它可能不是关于资源的。

    您是否有任何线索,工具或某些东西可以帮助我理解和调试正在发生的事情?

    可以帮助正确处理流的NPM模块: https://www.npmjs.com/package/pump

1 个答案:

答案 0 :(得分:1)

我做了一些测试,我想我找到了我想要的东西。这里有更多信息: https://nodejs.org/api/stream.html#stream_readable_unpipe_destination

也可以看到和阅读这个,它让我了解目标失败时管道保持打开的一些事情: http://www.bennadel.com/blog/2679-how-error-events-affect-piped-streams-in-node-js.htm

所以我已经完成了,我正在解压缩当流的结束事件时管道。但是我猜你可以用不同的方式制作它,这取决于你想要处理的东西,但你也可以从源/目标的错误中取消。

编辑:我仍然有问题,当它没有时,它现在正在进行排队。我必须加倍检查。