Сокет.ввод-вывод не подключается повторно после потери соединения — React Native Nodejs

#node.js #react-native #websocket #socket.io

#node.js #react-native #websocket #socket.io

Вопрос:

КЛИЕНТ

На стороне клиента react native я использую socket.io-клиент версии 2.1.1, и я включил сокет.ввод-вывод такой:

 window.navigator.userAgent = 'react-native';
import io from 'socket.io-client/dist/socket.io';
socket = io('MY_SERVER_URL', {jsonp: false});
  

Mycomponent.js компонент выглядит следующим образом

 constructor(props){
  super(props)
  this.state = {}

  socket.on('disconnect', () => {
     socket.connect() // code for reconnecting
     console.log('disconnected...')
  });

  socket.on('someEvent',this.someEventFunction)
}

render(){
  return(
   <Button onPress={socket.emit('someEvent','testData')} title="Event button"/>
  )
}
  

СЕРВЕР

На сервере я использую сокет.версия ввода-вывода 2.3.0, и это код

 io.on('connection', (socket)=> {

    socket.on('someEvent',(data) => {
      socket.emit(data)     
    })

    socket.on('disconnect', ()=>{
      socket.disconnect();
    })

});
  

ПРОБЛЕМА

Когда соединение завершается (я вручную завершаю node.js сервер), он запускает событие отключения на Mycomponent.js (то есть консоль.в журнале написано, что «отключено …»). Но когда я включаю node.js подключение к серверу опять же, клиент и сервер, похоже, не подключены. (это означает, что ‘SomeEvent’ больше не работает)

Это похоже на то, что функция socket.connect() не работает или, возможно, я делаю что-то не так.

ЧЕГО Я ХОЧУ

Если соединение потеряно, мне нужно, чтобы клиент пытался повторно подключаться снова и снова. И если ему удастся восстановить соединение, мне нужны другие события, чтобы продолжать работать в обычном режиме.

Как мне решить эту проблему?