winolog
@winolog

Node js Soket.IO

Добрый день.
Возникла трудность с сервером Node. Объяснения найти нигде не удалось к сожалению.
Через Nое время сервер перестает отсылать клиенту сообщение, но сообщения которые вызываются по событию connect продолжают отрабатывать корректно.

кусок кода

var io = require('socket.io').listen(801)

tail.stdout.addListener(«data», function (data) {

io.sockets.json.send({'data_new': (s)}); // перестает работать.

}

io.sockets.on('connection', function (socket) {

socket.on('message', function (msg) {… } // Этот участок отрабатывает как положено.

Спасибо.
  • Вопрос задан
  • 3582 просмотра
Пригласить эксперта
Ответы на вопрос 5
TEHEK
@TEHEK
А что дает дебаг этого участка?

tail.stdout.addListener(«data», function (data) {

io.sockets.json.send({'data_new': (s)}); // перестает работать.

}


Если там поставить брейкпоинт после того, как он «перестает работать», интерпретатор будет туда заходить?

Больше похоже на то, что сокет выпал из коллекции в io.sockets, но остался жить внутри замыкания. Может быть какой-нибудь локальный дисконнект?
Ответ написан
Комментировать
winolog
@winolog Автор вопроса
socket = io.connect('http://*.*.*.*:801'); — на клиентской части
Схема работы приложения такая
Есть порт 9999 с него идут данные GPS Node Server Через var tail = spawn('telnet', ['85.192.128.99', '9999']);
аккумулирует и обрабатывает данные. При подключении сервер отдает накопленные данные, а потом начинает передавать в реальный момент поступающие данные с порта 9999 клиенту.
Ответ написан
winolog
@winolog Автор вопроса
Да заходит. в Chrome можно заметить что какие то xhr пакеты вроде приходят от сервера, но они не отображаются и по логам создается впечатление что сервер пытается слать не на тот id клиента так как (щас не могу точно показать лог, ошибка возникает не сразу а по прошедствии 5часов +)
пишется что то вроде
Connect client id = 777
writing 4::
xhr-polling closed due to exceeded duration
client 222 exceed time
Ответ написан
winolog
@winolog Автор вопроса
Сейчас попробую поконфигурировать.

debug — setting poll timeout
debug — discarding transport
debug — cleared close timeout for client 2245086562112165676
debug — clearing poll timeout
debug — xhr-polling writing 8::
debug — set close timeout for client 401565802907730959
debug — xhr-polling closed due to exceeded duration
debug — setting request GET /socket.io/1/xhr-polling/401565802907730959?t=1317843052327
debug — setting poll timeout
debug — discarding transport
debug — cleared close timeout for client 401565802907730959
debug — fired close timeout for client 464225284389499193
info — transport end
debug — discarding transport
debug — client authorized
info — handshake authorized 20175460221322298742
debug — setting request GET /socket.io/1/jsonp-polling/20175460221322298742?t=1317843055307&i=558
debug — setting poll timeout
debug — client authorized for
debug — clearing poll timeout
debug — jsonppolling writing io.j[558](«1::»);
debug — set close timeout for client 20175460221322298742
debug — setting request GET /socket.io/1/jsonp-polling/20175460221322298742?t=1317843055712&i=558
debug — setting poll timeout
debug — clearing poll timeout
debug — jsonppolling writing io.j[558](«4:::{\»event\":\«connected\»}");
debug — set close timeout for client 20175460221322298742
debug — discarding transport
debug — cleared close timeout for client 20175460221322298742
debug — fired close timeout for client 16139908521934804329
info — transport end
debug — discarding transport
debug — jsonppolling received data packet 4:::{«id»:«2»}
debug — client authorized
info — handshake authorized 2077497499272987050

Вот. Прошло время и смог выдрать кусок лога.
Ответ написан
Комментировать
winolog
@winolog Автор вопроса
Блин… это не достойно наверно баг репорта. Подозреваю что причина в том что слетает telnet по timeout и событие перестает вызываться.
Ответ написан
Ваш ответ на вопрос

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

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