Неуловимые ошибки в node.js

Таким образом, я пытаюсь записать простой сервер сокета TCP что информация о широковещательных сообщениях всем связанным клиентам. Таким образом, когда пользователь соединяется, они добавляются к списку клиентов, и когда поток испускает близкое событие, они удалены из клиентского списка.

Это работает хорошо, за исключением того, что иногда я отправляю сообщение так же, как пользователь разъединяется.

Я попытался перенестись stream.write() в a try/catch блок, но никакая удача. Кажется, что ошибка неуловима.

11
задан Aurélien Gasser 17 December 2015 в 19:21
поделиться

1 ответ

Решение состоит в том, чтобы добавить прослушиватель для события 'error' потока. Поначалу это может показаться нелогичным, но оправдание этому есть.

stream.write () отправляет данные асинхронно. К тому времени, когда этот узел осознал, что запись в сокет вызвала ошибку, ваш код перешел, минуя вызов stream.write, поэтому у него нет возможности вызвать ошибку там.

Вместо этого в этой ситуации узел генерирует событие 'error' из потока, а EventEmitter кодируется таким образом, что если нет слушателей для события 'error', ошибка возникает как исключение верхнего уровня и процесс заканчивается.

18
ответ дан 3 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

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