【问题标题】:Express.js close responseExpress.js 关闭响应
【发布时间】:2012-11-13 07:23:55
【问题描述】:

有没有办法关闭回复?我可以使用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 循环中。

【问题讨论】:

    标签: javascript node.js express keep-alive


    【解决方案1】:

    如果真的想关闭连接的人发现了这个,你可以使用res.socket 或res.connection 来获取带有destroy 方法的net.Socket 对象:

    res.connection.destroy();
    

    【讨论】:

    • 这正是我需要模拟自动化测试的网络可用性下降而无需手动禁用互联网连接。
    【解决方案2】:

    通过设置HTTP头来关闭连接而不是默认的keep-alive策略来解决。

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

    【讨论】:

    • 有什么方法可以将它作为默认值附加到所有响应中?
    • @AbhishekDeb 如果您创建一个设置上述标头的中间件,那么它将适用于所有请求
    • 当然这只是告诉远程端关闭连接。如果您在响应中发回标头,则不会关闭连接。
    • 节点可能(默认)保持连接打开(保持活动)策略
    猜你喜欢
    • 2014-03-09
    • 2012-10-13
    • 1970-01-01
    • 2015-12-05
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多