【问题标题】:node.js write directly to the socket underlying httpnode.js 直接写入底层http的socket
【发布时间】:2013-08-19 20:37:24
【问题描述】:

我有一个 Node.js http 服务器,它偶尔充当一些用不同语言编写的服务器端代码的代理。

所以有时(但不总是)http 请求将通过套接字传递到服务器应用程序。来自应用程序的响应已经包含 http 标头。

问题是我想简单地将应用程序响应写入http响应流,而不用担心单独写入标头和内容。

我可以使用网络套接字实现整个 http 服务器,但我希望最终实现一个节点 http 框架作为前端。

使用http模块,有没有办法直接写入底层响应套接字?

【问题讨论】:

  • 我不确定这是否会有所帮助 - 但也许研究 socket.io/engine.io 如何处理 upgrade 请求可能是一个不错的起点?见:engine.io.js
  • 反向 HTTP 代理是处理此问题的最合适方法 -- http-proxy 正是您要找的。​​span>

标签: node.js


【解决方案1】:

当请求进来时,您应该能够访问请求的connection 属性。

var http = require('http');
http.createServer(function (req, res) {

  req.connection.write(/* your data here */);

}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

请注意,如果您这样做,您还有责任在完成后关闭连接。 您也可以将两个流通过管道连接在一起。

【讨论】:

  • 写完后确保调用 req.connection.end() 来发送响应:-)
  • @Chandu,好点子,但不要在req 上调用end(),否则内置代码会发送标题等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 2011-11-23
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
相关资源
最近更新 更多