You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js(Nest.js)中SSE过期连接响应对象的处理方案

SSE内存泄漏与订阅者清理问题

场景描述

项目采用SSE连接流程,将SSE响应对象存储在本地内存中用于通知客户端,存储格式如下:

memory = {"transactionId": [array of subscribers]}

每个transactionId可对应多个订阅者,当指定事务发生事件时,会通知该事务下的所有订阅者。

当前问题

为防止内存泄漏,需要清理内存中的无效订阅对象。目前通过subscriber.writable属性判断事务是否存在活跃订阅者,进而删除无活跃订阅的事务,但发现即使客户端销毁/关闭流,writable属性始终为true,导致内存从未被清理。

核心疑问

需要找到一种在无法向任何订阅者写入时删除transactionId的方法,具体疑问如下:

  • 能否使用subscriber.destroyed属性作为判断依据?
  • 若destroyed为true,是否可以确定该流已无法再被使用、可安全从内存中删除?
  • 客户端重连时,是否会生成同一个流对象?

内容的提问来源于stack exchange,提问作者Rohan Gaonkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:14:51