Как сохранить соединение с сокетом.IO?

#javascript #reactjs #react-native #socket.io

Вопрос:

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

Проблема, с которой я сталкиваюсь, заключается в том, что если я помещу клиентское приложение в фоновом режиме, оно через некоторое время отключится, и я получу следующие сообщения в терминале

 ID context fcRzOWmBSQb3RWlUAAXQ  LOG DISCONNECTED ping timeout  LOG Is disconnected ping timeout  LOG DISCONNECTED ping timeout  LOG DISCONNECTED ping timeout  LOG Is disconnected ping timeout  LOG DISCONNECTED ping timeout  LOG Is disconnected ping timeout  LOG DISCONNECTED ping timeout  LOG Is disconnected ping timeout  LOG ID context reconnected undefined  LOG ID context reconnected undefined  LOG ID context reconnected BhjFYCZXf7BE8vEhAAXw  LOG ID context reconnected BhjFYCZXf7BE8vEhAAXw  LOG ID context BhjFYCZXf7BE8vEhAAXw  LOG ID context BhjFYCZXf7BE8vEhAAXw  LOG ID context BhjFYCZXf7BE8vEhAAXw  LOG ID context reconnected BhjFYCZXf7BE8vEhAAXw  LOG ID context BhjFYCZXf7BE8vEhAAXw  

вот мой SocketClient.js

 export default class socketAPI {  socket;   connect(user, listener) {  this.socket = io(BASE_URL, {  query: `type=clientamp;id=${user}`,  reconnection: true,  transports: ['websocket', 'polling'],  });   this.socket.on('connect', () =gt; {  listener(true);  });   this.socket.on('disconnect', reason =gt; {  console.log('DISCONNECTED', reason);  });  }   disconnect(listener) {  this.socket.disconnect(reason =gt; {  this.socket = null;  listener(false);  });  }   emit(event, data, listener) {  if (!this.socket) {  console.log('No socket connection. Emit event');  return null;  }   this.socket.emit(event, data, listener);  }   on(event, listener) {  if (!this.socket) {  console.log('No socket connection. On event');  return null;  }   this.socket.on(event, listener);  }   off(event, listener) {  if (!this.socket) {  console.log('No socket connection. On event');  return null;  }   this.socket.off(event, listener);  } }  

И это та часть из SocketContext.js где я устанавливаю связь

 useEffect(() =gt; {  socketClient.connect(client.id, () =gt; {  console.log('ID context', socketClient.socket.id);  dispatch(updateSocketStatus(socketClient.socket.id));  });  socketClient.on('disconnect', isDisconnected =gt; {  console.log('Is disconnected', isDisconnected);  dispatch(updateSocketStatus(null));  if (isDisconnected) {  socketClient.connect(client.id, () =gt; {  console.log('ID context reconnected', socketClient.socket.id);  dispatch(updateSocketStatus(socketClient.socket.id));  });  }  });  }, [client]);