##因为useEffect比较类组件的写法轻量级,所以采用useEffect写法
- 首先想到的是在在useEffect中定义,加载时就调用websockeet方法,建立连接,当页面卸载时就调用close方法关闭连接。
- 具体做法
- 定义一个ws用于打开关闭连接
//全局定义一个变量,用于打开关闭连接
let ws ;
//定义打开连接的方法
const webSocket = () => {
return new Promise((resolve, reject) => {
ws = new WebSocket(url);
// let res = [];
ws.onopen = () => {
if (ws.readyState === 1) {
console.log("websocket连接成功...");
resolve(ws)
}
};
ws.onmessage = (e) => {
console.log("后台推送:", JSON.parse(e.data));
let res = JSON.parse(e.data);
setDataSource(res)
};
ws.onclose = () => {
console.log("websocket连接关闭...")
};
ws.onerror = (err: any) => {
reject(err)
}
})
};
//定义关闭连接的方法
const close=()=>{
ws.close();
}
useEffect(()=>{
console.log("连接")
webSocket();
return ()=>{
console.log("卸载")
close()}
},[])