41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
import { useState, useEffect } from 'react';
|
|
|
|
const SocketContext = React.createContext();
|
|
|
|
export const SocketContextProvider = (props) => {
|
|
const [runState, setRunState] = useState(null);
|
|
const [hisState, setHisState] = useState(null);
|
|
|
|
useEffect(() => {
|
|
const socket = new WebSocket('ws://172.16.1.55:8081/xc-screen/websocket/1');
|
|
socket.onopen = () => {
|
|
console.log('[*] socket connected!');
|
|
};
|
|
socket.onmessage = (e) => {
|
|
if ('data' in e) {
|
|
console.log('data ===> ', e.data);
|
|
if (e.data == '连接成功') return;
|
|
let incommingData = JSON.parse(e.data);
|
|
switch (incommingData.type) {
|
|
case 'RunData':
|
|
console.log('run data arrived, set RunData');
|
|
setRunState(incommingData.data);
|
|
break;
|
|
case 'HisData':
|
|
console.log('his data arrived, set HisData');
|
|
setHisState(incommingData.data);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
}, []);
|
|
|
|
return (
|
|
<SocketContext.Provider value={{ runState, hisState }}>
|
|
{props.children}
|
|
</SocketContext.Provider>
|
|
);
|
|
};
|
|
|
|
export default SocketContext;
|