в нашем собственном приложении реагирования мы используем веб-сокеты, иногда, когда у нас происходит аварийное закрытие (веб-сокет: закрыть 1006 (аварийное закрытие): неожиданный EOF)
событие onclose / onerror не вызывается сразу, но через 20-60 минут (только на ios).Обратите внимание, что эта проблема появляется только в фоновом режиме.
это приводит к тому, что наше приложение не знает, что соединение закрыто, и оно не инициирует новое соединение
мы пытались прослушивать сеть с помощью wiresharkно проблема возникает только иногда, и нам не удавалось поймать ее в течение последних 24 часов.
Как мы можем обнаружить такое событие?
наш код:
initiateConnection = (url) => {
this.conn = new WebSocket(url);
this.conn.onopen = this._handleConnectionOpen;
this.conn.onerror = this._handleConnectionError;
this.conn.onclose = this._handleConnectionClose;
this.conn.onmessage = this._handleMessage;
};
_handleConnectionClose = data => {
Log.info('WS - connection closed', data.reason);
};
_handleConnectionError = data => {
Log.info('WS - connection closed', data.reason);
};