[英]NestJS SSE memory leak
我想使用“服務器端事件”來通知所有客戶端。 我沒有找到廣播的方法,所以我決定在內部使用 Eventemitter。 這會導致 memory 泄漏。 當 sse 損壞時,我如何廣播或取消訂閱 Eventemitter(我認為這是一個糟糕的解決方案)
感謝您在 StackOverFlow 上提問!
注意:如果您以文本格式而不是屏幕截圖提交代碼,下次會更好:)
從您提供的代碼來看,每次服務器觸發事件時,您都會注冊一個新的偵聽器,這將觸發事件 n^2 次發出的事件。
您有 2 個可以實施的解決方案:
'channel.bindAccount'
事件是否已經注冊,不要再次注冊。 我不推薦這種解決方案,但可以做到。constructor() {
const event = new Subject<MessageEvent>();
this.eventEmitter.on('channel.bindAccount', (payload) => {
console.log(payload);
event.next({data: payload} as MessageEvent);
});
}
@Public()
@Sse('event')
event(): Observable<MessageEvent> {
this.eventEmitter.emit('channel.bindAccount', (payload));
}
在構造函數中注冊事件並在 sse 上發出它是我的想法,但是我不完全確定有效負載的確切來源並且我沒有測試代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.