我想通过 HTTP 连接在 Node.JS 客户端和 Node.JS 服务器之间创建双向流。但似乎request
直到客户端调用服务器的事件才被调用req.end()
。如何建立双向通信?我需要使用单独的请求吗?
澄清:我的期望是有可能
- 客户端发送请求头,
- 发送响应头的服务器,以及
- 服务器和客户端随时发送字节。
编辑:好的,这是选项的摘要:
单独端口上的 TCP 套接字:如果您不介意打开单独的端口,然后修改以前使用的 HTTP(请求路径和标头以及响应标头)以改用流,这很好。(我拒绝了这个选项。)
单独的 HTTP 请求,每次需要刷新时结束请求。管理状态将在应用程序中完成,因为现在结束的连接将不再代表结束的会话。(短期内,我会使用这个选项。)
Socket.IO(是WebSockets +反向兼容的实现):这个选项很吸引人,但是需要在HTTP层前面加上Socket.IO层。Socket.IO 将通过所有 HTTP 请求,但 WebSocket 请求的处理方式不同。(从长远来看,我将使用此选项,但我必须修改我的前端以允许这样做。)
据我了解,Node.JS
http
库不允许我发送响应标头,除非客户端已经完成(或至少基本上开始)发送请求正文。我想这是有充分理由的,所以第三个选项也可以命名为在http
库前面添加一个图层。