是否有必要在每个连接上调用response.end()



我正在使用SSE,所以唯一需要的方法是response.writeHead和response.write,因为响应永远不会真正结束。它结束的唯一方法是客户端断开连接,这就引出了我的问题。。。

我需要听";关闭";事件并手动调用response.end,还是没有区别?从技术上讲,无论如何连接都已经断开了,因此无法刷新响应或其他任何操作。因此,我很困惑nodejs是否会正确卸载所有内容,即使从未为特定响应调用response.end。

为SSE设置连接时,只需设置标头,然后在需要发送数据时调用res.write()。请记住,您需要发送某种分隔符(例如换行符(,以便客户端知道何时收到";块";它可以处理的数据。

以下是nodejs和服务器发送事件的几个例子,您可以看到,只要它想发送数据,就只使用res.write()

https://jasonbutz.info/2018/08/server-sent-events-with-node

https://masteringjs.io/tutorials/express/server-sent-events

我需要听";关闭";事件并手动调用response.end,还是没有区别?

如果您的端上有资源或计时器需要在连接完成时清理,则您确实需要监听关闭(如您将在上面的一些示例中看到的(。当连接关闭时,您不需要调用res.end(),因为客户端已经关闭了连接。

最新更新