Node.js HTTP服务器,检测客户端断开连接

24

我正在使用 Node.js 的 Express 进行 http 服务器开发。我保存了响应对象,以便在该通道上向客户端流传事件。是否有一种方法可以检测客户端断开连接?当我关闭客户端时,我仍然可以写入响应对象而不会收到任何异常或错误。看起来服务将保持底层 TCP 通道的打开状态只要我继续向响应对象写入数据。


4
你考虑过使用http://socket.io吗? - Alfred
res.connection.destroyed - Time Killer
1个回答

53
req.on("close", function() {
  // request closed unexpectedly
});

req.on("end", function() {
  // request ended normally
});

很好,这对我来说也是新的 :) - Alfred
注意:'close'可以在'end'之后触发,但反之则不行。我很困惑。'close'怎么可能在'end'之后发出?我只能想象它是相反的。用户已断开连接,但例如对mysql的请求已经发送。 - Somebody
当我们关闭WiFi时,两者都不会发生。客户端显示已断开连接,但服务器仍然连接,并在peerjs服务器中提供“unavailable-id”。 - Phaneendra Charyulu Kanduri
@PhaneendraCharyuluKanduri 我现在也处于同样的困境,如果浏览器或选项卡关闭,则会关闭触发器,但如果出现意外中断,则不会触发。想知道是否有任何处理程序可以利用。 - Sai
6
无论如何,节点12上的“close”事件最终会被触发。 - Naveen

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