import {useUserStore} from "@/store/index.js";
|
import {getEnvObj} from "@/utils/index.js";
|
import {enterRoom} from "@/utils/voiceCallByTX/index.js";
|
|
let socketTask = null
|
|
export function useGlobalWS() {
|
const userStore = useUserStore();
|
const userId = computed(() => userStore?.userInfo?.user_id)
|
const access_token = computed(() => userStore?.userInfo?.access_token)
|
const {VITE_APP_WS_API_URL} = getEnvObj()
|
|
// 消息处理
|
function messageHandler(payload) {
|
switch (payload.biz_code) {
|
case 'JOB_ISREFRESH':
|
break
|
case 'DEVICE_ISREFRESH':
|
break
|
case 'DOWNLOAD_PROGRESS':
|
break
|
case 'LOGOUT_USER':
|
userStore.setUserInfo(null)
|
uni.reLaunch({
|
url: '/pages/login/index'
|
})
|
break
|
case 'VoiceCall':
|
// enterRoom(payload, userId.value)
|
break
|
default:
|
break;
|
}
|
}
|
|
// 关闭ws
|
function closeWS() {
|
socketTask?.close({
|
success: () => {
|
console.log('ws关闭连接');
|
},
|
})
|
}
|
|
// 初始化ws
|
function initWS() {
|
// 关闭,再连接ws
|
closeWS()
|
if (!access_token.value) return
|
const url = VITE_APP_WS_API_URL
|
+ `?x-auth-token=${encodeURI(access_token?.value)}`
|
+ `&model_type=3&workspace-id=${userId.value}`
|
// 创建连接
|
socketTask = uni.connectSocket({
|
url: url,
|
success: () => {
|
console.log('ws连接成功');
|
},
|
fail: (err) => {
|
console.error('ws连接失败:', err);
|
}
|
});
|
// 消息监听
|
socketTask.onMessage((result) => {
|
messageHandler(JSON.parse(result.data))
|
})
|
}
|
|
watch(access_token, initWS, {immediate: true})
|
}
|