Сокет nodejs io не может вызвать emit of undefined. Причины?

Я использую nodejs и сокет io. Основная цель кода - запрос данных с сервера и размещение их на веб-сайте клиента.

Я сделал так, чтобы каждые 10 секунд данные запрашивались от клиента к серверу, а когда данные были получены, они отображались на веб-сайте.

Проблема заключается в том, что большую часть времени прием данных с сервера и их передача клиенту работает, но время от времени он отключается и выдает ошибку, в которой говорится, что метод сокета emit не определен. Я считаю, что это означает, что клиент больше не определен.

код сервера:

sockets[to].emit('cm0101', {soCase : '2', soData : ret } );

это код, который получает TypeError: не может вызвать метод 'emit' из неопределенного.

Что меня смущает, так это то, что он работает 9 из 10 раз, но время от времени терпит неудачу (предположительно, когда клиент выключен по какой-либо причине. Но нет никаких причин / идентифицированных случаев выключения клиента)

У кого-нибудь еще была такая же проблема? кто-нибудь знает, почему это произошло? Знание всех возможных причин этой ошибки поможет мне понять, почему это происходит.

1 ответ

Я полагаю, вы не проверяли sockets[to] до. Вы должны написать свой код так:

var socketTo = sockets[to];
if ( socketTo ) {
  sockets[to].emit('cm0101', {soCase : '2', soData : ret } );
}
Другие вопросы по тегам