@jenya7771

Как удалить конкретный слушатель socket.io?

Здравствуйте, есть вот такая функция
exports.list = () => {

	return new Promise((resolve, reject) => {

		try {

			if (conect) {

				const hash = crypto.randomBytes(30).toString('hex')
				
				socket
				.emit('list', JSON.stringify({
					auth: key,
					hash: hash
				}))
				.on('list', (data) => {

					data = JSON.parse(data) 

					if (data.hash === hash) {

						resolve(data.list)
					}
				});
			} else {

				reject(new Error('Disconnect to socket API'))
			}
		} catch (error) {

			reject(error)
		}	
	})
}

И она вызывается очень часто, и как я понимаю при каждом вызове я создаю слушатель list, и после того как я получаю ответ он не удаляется и из-за этого огромная нагрузка на сервер, сегодня уже задавал вопрос.
Как я понимаю после получения ответа от слушателя мне нужно его удалить, но как удалить конкретный слушатель List, а не все?
Socket использую для получения данных (как API), и как сделать тоже самое с одним слушателем не знаю, может кто делал что подобное, и есть выход из такой ситуации?
  • Вопрос задан
  • 399 просмотров
Решения вопроса 1
Negezor
@Negezor
Senior Shaurma Developer
Есть два варианта:
1. Поставьте слушатель глобально и не удаляйте его. (Более правильно)
2. Использовать вместо .on(), .once(). Он создаёт слушатель и после одного события его удалит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы