j***@gongying100.com
j***@gongying100.com
  • 发布:2025-05-08 14:43
  • 更新:2025-05-08 14:43
  • 阅读:31

connectSocket在Android未成功连接, SocketTask.onError 返回空对象是怎么回事

分类:uni-app

uni.connectSocket()等websocket接口不能正常工作,会进入onError回调但是错误对象是空的。

let socketTask = ref(null);  
let isConnected = false;  
const connectWebSocket = () => {  
    if (isConnected || socketTask.value) return;  
    socketTask.value = uni.connectSocket({  
        url: "wss://wss.gongying.love/wss",  
        success: () => {  
            isConnected = true;  
            console.log("WebSocket 连接成功");  
            sendMessage();  
            console.log("readyState:", socketTask.value.readyState);  
        },  
        fail: (err) => {  
            console.error("WebSocket 连接失败", err);  
        },  
    });  
    console.log("socketTask.value", socketTask.value);  
    socketTask.value.onOpen((res) => {  
        console.info("监听WebSocket连接打开事件", res);  
    });  
    socketTask.value.onMessage((event) => {  
        const resultData = JSON.parse(event.data);  
        const { code, msg } = resultData;  
        if (code !== 200) {  
            uni.showToast({  
                title: msg,  
                icon: "none",  
            });  
            return;  
        }  
        uni.showToast({  
            title: msg,  
            icon: "success",  
        });  
    });  
    socketTask.value.onClose(() => {  
        isConnected = false;  
        socketTask.value = null;  
        console.log("WebSocket 连接关闭");  
    });  

    socketTask.value.onError((error) => {  
        console.error("WebSocket error:");  
        console.error(error);  

    });  
};  

const unConnectWebSocket = () => {  
    if (socketTask.value) {  
        socketTask.value.close({  
            success: () => {  
                console.log("WebSocket连接关闭成功");  
            },  
            fail: (err) => {  
                console.error("关闭连接失败:", err);  
            },  
        });  
        socketTask.value = null;  
        isConnected = false;  
    }  
};  

const sendMessage = () => {  
    const accountInfo = uni.getStorageSync("accountInfo") || {  
        id: 0,  
    };  
    const user_id = `employeeId_${accountInfo.employeeId}`;  
    const data = {  
        type: "bind",  
        user_id,  
    };  
    console.log(data);  
    socketTask.value.send(JSON.stringify(data));  
};  
onShow(() => {  
        // 挂载uni.connectSocket  
    connectWebSocket();  
    logger.log("App Show");  
});  
plus.runtime.quit = function () {  
        // 卸载uni.connectSocket  
    unConnectWebSocket();  
    main.moveTaskToBack(false);  
};

2025-05-08 14:43 负责人:无 分享
已邀请:

要回复问题请先登录注册