React native 在React Native中获取重复的Websocket事件
我已经用Websocket实现了react native来接收事件。有时我会因为一个独特的事件而收到两个事件。我怎么知道原因呢React native 在React Native中获取重复的Websocket事件,react-native,sockets,websocket,React Native,Sockets,Websocket,我已经用Websocket实现了react native来接收事件。有时我会因为一个独特的事件而收到两个事件。我怎么知道原因呢 useEffect(() => { console.log('==========socket useEffect called========='); getNewState(); }, []); const getNewState = () => { const socket = new WebSocket('wss://socket.xxx.y
useEffect(() => {
console.log('==========socket useEffect called=========');
getNewState();
}, []);
const getNewState = () => {
const socket = new WebSocket('wss://socket.xxx.yyy/providers');
socket.onopen = () => {
socket.send('ping');
socket.send(JSON.stringify({ user_name: userName }));
};
socket.onmessage = (event) => {
let eventData = event.data;
if (eventData !== 'pong') {
console.log(eventData);
} else {
console.log('pong');
};
socket.onerror = (e) => {
console.log(e);
socket.close();
};
socket.onclose = (er) => {
console.log(er);
setTimeout(() => {
getNewState();
}, 60000);
};
}
我在App.js的根目录中调用此组件:
class App extends React.Component {
render() {
return (
<Provider store={store}>
<StatusBar key="AppStatusBar" barStyle="light-content" backgroundColor={colors.blackAlertHeader} />
<Socket />
<AppContainer />
</Provider>
);
})
useEffect(() => {
AppState.addEventListener('change', () => controlSocketConnection());
return () => AppState.removeEventListener('change', () => controlSocketConnection());
}, []);
const controlSocketConnection = async () => {
if (AppState.currentState == 'active') {
socket = await connectToWS();
// handle socket onopen, onmessage, ...
} else if (AppState.currentState == 'background') {
socket.close();
}