Express.js关闭响应

26
有没有一种方法可以关闭响应?我可以使用res.end(),但它实际上并不会关闭套接字。
我想要做到的是:我正在编写一个与网络进行交互的Java程序,并为此编写一个NodeJS服务器。Java代码:
String line;
while((line = in.readLine()) != null) {
    System.out.println("RES: "+line);
}

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

节点:

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

然而,res.end()并不会关闭连接。正如之前所说,Java仍然认为接下来还有东西,所以它停留在while循环中。

2个回答

39

通过将HTTP头设置为关闭连接而不是默认的保持活动策略来解决。

res.set("Connection", "close");

1
有没有办法将它默认挂钩到所有响应中? - Abhishek Deb
4
如果你创建一个中间件来设置上述标头,那么它将适用于所有请求。 - Matej
4
这只是告诉远程端关闭连接。如果在响应中发送头信息,则并未关闭连接。 - Phil
2
默认情况下,Node 可能会保持连接开放(keep-alive)策略。 - Matej

17

1
这正是我需要的,可以模拟网络可用性下降以进行自动化测试,而无需手动禁用互联网连接。 - zivc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接