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);
};