SocketRocket аварийно завершает работу Node.js WebSocket

Я написал простой чат-сервер Node.js WebSocket. Для запуска сервера я использую foreman start с Procfile, который просто содержит строку: chat: npm start.

Я также написал приложение для iPhone, которое использует SocketRocket для подключения к вышеупомянутому серверу. В applicationDidEnterBackground: я звоню close на webSocket. И в applicationWillEnterForeground: я воссоздаю webSocket и вызываю open.

При входе в фоновый или передний план приложение для iPhone, похоже, вылетает из сервера с ошибкой:

chat.1 | events.js:74
chat.1 |         throw TypeError('Uncaught, unspecified "error" event.');
chat.1 |               ^
chat.1 | TypeError: Uncaught, unspecified "error" event.
chat.1 |     at TypeError (<anonymous>)
chat.1 |     at WebSocket.EventEmitter.emit (events.js:74:15)
chat.1 |     at Receiver.self._receiver.onerror (~/Projects/Chat/node_modules/ws/lib/WebSocket.js:719:10)
chat.1 |     at Receiver.error (~/Projects/Chat/node_modules/ws/lib/Receiver.js:301:8)
chat.1 |     at Receiver.opcodes.8.finish (~/Projects/Chat/node_modules/ws/lib/Receiver.js:497:14)
chat.1 |     at Receiver.<anonymous> (~/Projects/Chat/node_modules/ws/lib/Receiver.js:478:33)
chat.1 |     at Receiver.add (~/Projects/Chat/node_modules/ws/lib/Receiver.js:93:24)
chat.1 |     at Socket.firstHandler (~/Projects/Chat/node_modules/ws/lib/WebSocket.js:678:22)
chat.1 |     at Socket.EventEmitter.emit (events.js:95:17)
chat.1 |     at Socket.<anonymous> (_stream_readable.js:746:14)
chat.1 | npm ERR! weird error 8
chat.1 | npm ERR! not ok code 0
chat.1 | exited with code 1
system | sending SIGTERM to all processes

Почему это происходит? И как мне это исправить?


person ma11hew28    schedule 23.10.2013    source источник


Ответы (1)


Вчера я столкнулся с той же ошибкой и смог исправить ее на стороне Node.Js, подключив обработчик событий «ошибка».

wss.on('connection', function(connection) {
  connection.on('error', function(reason, code) {
    console.log('socket error: reason ' + reason + ', code ' + code);
  });
}

Я попытаюсь найти причину этого в коде SocketRocket, но пока он работает с

person Pavel Tisunov    schedule 24.10.2013
comment
ты понял это? - person mauricioSanchez; 31.07.2014