#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() не работает или, возможно, я делаю что-то не так.
ЧЕГО Я ХОЧУ
Если соединение потеряно, мне нужно, чтобы клиент пытался повторно подключаться снова и снова. И если ему удастся восстановить соединение, мне нужны другие события, чтобы продолжать работать в обычном режиме.
Как мне решить эту проблему?