使用react的hook写法实现当前写页面加载时连接websocket,卸载页面时关闭websocket

本文介绍了如何利用React的Hook,特别是useEffect,来实现在页面加载时开启WebSocket连接,而在页面卸载时关闭连接。通过在useEffect中设置相应的逻辑,确保了WebSocket生命周期与React组件的生命周期同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##因为useEffect比较类组件的写法轻量级,所以采用useEffect写法

  1. 首先想到的是在在useEffect中定义,加载时就调用websockeet方法,建立连接,当页面卸载时就调用close方法关闭连接。
  2. 具体做法
  3. 定义一个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()}
},[])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值