Express.js关闭响应

cod*_*nja 18 javascript keep-alive node.js express

有没有办法结束回复?我可以使用,res.end()但它实际上并没有关闭套接字.

我想要实现的目标:我正在编写一个与网络接口的Java程序,我正在为此编写一个node.js服务器.Java代码:

String line;
while((line = in.readLine()) != null) {
    System.out.println("RES: "+line);
}
Run Code Online (Sandbox Code Playgroud)

但这只是一直挂着..没有结束连接,仍在等待来自套接字的输入.

节点:

exports.getAll = function (req, res) {
    res.set("Content-Type", "text/plain");
    res.set(200);
    res.send(..data..);
    res.end();
}
Run Code Online (Sandbox Code Playgroud)

但是res.end()没有关闭连接..如前所述,java一直认为会有下一步的东西,所以它被困在while循环中.

谢谢

cod*_*nja 28

通过设置HTTP标头来关闭连接而不是默认保持活动策略来解决此问题.

res.set("Connection", "close");
Run Code Online (Sandbox Code Playgroud)

  • @AbhishekDeb如果您创建一个设置上述标头的中间件,那么它将适用于所有请求 (3认同)
  • 当然,这只是告诉远程端关闭连接。如果您在响应中发回标头,则不会关闭连接。 (3认同)
  • 节点可能(默认情况下)保持连接打开(保持活动)策略 (2认同)

Spe*_*ect 12

如果真的只想关闭连接的人发现了这一点,您可以使用res.socketres.connection来获取带有destroy方法的net.Socket对象:

res.connection.destroy();
Run Code Online (Sandbox Code Playgroud)