Получаю новые сообщения от одного сервиса, только эти новые сообщения мне нужно фильтровать.
Фильтр приходит от другого сервера и должен существовать определенное время.
Отсюда 2 проблемы:
1. Утечка памяти при получении новых сообщений.
eventEmitter.on('NEW_MESSAGE', (msg) => {
// При каждом новом сообщении будет создавать новую прослушку
ws.on('FILTER', async (filter) => {
// отправляем ответ на сервер
await sendMsg(msg, filter)
})
})
2. Эти фильтры нужно резолвить, чтобы опять же не забивать память не нужными объектами.
Я делаю так. При текущей реализации это работает.
const sendMsg = async (msg, filter) => {
try {
// Отправляем если фильтр соответствует
if (msg.id === filter.id) {
ws.emit('FILTER', msg)
}
if(msg.status === filter.status || msg.status === 'completed') {
resolve(msg)
}
} catch (error) {
rejects()
}
}