Node.JS:流HTTP客户端请求体?

时间:2012-08-23 22:16:56

标签: http node.js stream client

我想通过HTTP连接在Node.JS客户端和Node.JS服务器之间创建双向流。但似乎在客户端调用request之前不会调用服务器的req.end()事件。如何建立双向通信?我需要使用单独的请求吗?

澄清:我的期望是

是可能的
  1. 发送请求标头的客户端
  2. 发送响应标头的服务器,
  3. 服务器和客户端随时发送字节。
  4. 编辑:好的,这是选项摘要:

    • 单独端口上的TCP套接字:如果您不介意打开单独的端口,然后修改以前使用的HTTP(请求路径和标头以及响应标头),这很好)改为使用流。 (我拒绝了这个选项。)

    • 每次需要刷新时,单独的HTTP请求结束请求。管理状态将在应用程序中完成,因为现在已结束的连接将不再代表已结束的会话。 (在短期内,我将使用此选项。)

    • Socket.IO (这是 WebSockets的实现 +反向兼容性):此选项非常吸引人,但您需要添加Socket.IO图层位于HTTP层之前。 Socket.IO将传递所有HTTP请求,但WebSocket请求将以不同方式处理。 (从长远来看,我将使用此选项,但我必须修改我的前端以允许此操作。)

      据我了解,Node.JS http库不允许我发送响应头,除非客户端已经完成(或至少基本上开始)发送请求主体。我想这是有充分理由的,所以第三个选项也可以标题为http库前面添加一个图层。

1 个答案:

答案 0 :(得分:2)

如果您真的在寻找双向通信系统,那么HTTP并不是正确的协议。整个想法是它是无状态的并且一次处理1个请求。这条规则有例外,但这些规则实际上正在扩展HTTP应该做的事情,并且可以被视为黑客攻击。

听起来你应该使用像Socket.IO

这样的东西