Сокет 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 } );
}