Reputation: 3
I am using SSE connection workflow in one of my projects. I store SSE response objects in the local memory which can then be used to notify the client. SSE connections/response are stored in following format.
memory = {"transctionId": [array of subscribers]}
each transactionId can have multiple subscribers.
The idea is when some event has happened to a given transaction i notify all the subscribers.
At some point i would need to cleanup my memory object to prevent memory leak. Currently i am using subscriber.writable
property to check if a given transaction has no active subscribers and can be deleted from memory.
However, I see that writable property is always true even if stream is destroyed/closed by the client and memory is never cleared.
I need a way to delete transactionId from the memory when i can no longer write to any of the subscribers. Can i use subscriber.destroyed? Suppose destroyed is true are we sure that such a stream can never be used again and safe to delete? Or client reconnection respawns same stream?
Upvotes: 0
Views: 22