如何在使用Express的Node.js中关闭HTTP连接

6

我将使用node.js(Express)和服务器发送事件。 我想通过关闭sse HTTP连接来关闭事件流。 给定以下功能:

router.get('/sse', function (req, res) {

});

这个怎么实现呢?

这可能是你的解决方案,正如@Mikael所回答的那样。 - Savitoj Cheema
3个回答

15

如何在ExpressJS中挂断电话

Ⅰ. 结束响应,保持套接字连接处于活动状态。

response.end();

Ⅱ. “请先挂断电话”

请求客户端发起TCP套接字连接终止序列。

response.set("Connection", "close"); // Note: this is an HTTP header.

Ⅲ. 轻松关闭套接字连接。

“嘿,我现在要挂电话了,好吗?”

TCP连接终止序列

response.connection.end();

socket.end([data[, encoding]][, callback])

半关闭套接字,即发送一个 FIN 报文。服务器仍有可能会发送一些数据。

详见 writable.end() 了解更多细节。

Ⅳ. 意味着强制断开与客户端的连接,甚至不发送 FIN 报文。

response.connection.destroy();

socket.destroy([error])

确保此套接字上没有更多的I/O活动。销毁流并关闭连接。

有关详细信息,请参见writable.destroy()


12

使用此功能

res.end();

它将起到关闭连接的作用。


8
这个回复结束了,但并没有关闭TCP连接。 - Pavel P

4

所选答案是不正确的,res.end()会结束响应并写入套接字,但它不会关闭TCP连接。

您需要从res对象获取底层连接,并调用end()来关闭它。

res.connection.end();


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