吉安感知网项目-前端
shuishen
2026-02-12 3ec8d3625e6fb7614e2ec4bb02ed99a3cdf4cdb7
uniapps/work-app/src/hooks/useGlobalWS.js
@@ -6,21 +6,23 @@
   const userStore = useUserStore();
  const appStore = useAppStore();
  const callStatus = ref(null)
  // token 存储
  const accessToken = ref('')
  // 设置默认用户ID为3
  const defaultUserId = '3';
  const defaultUserId = '2021475329842999298';
  // WebSocket基础URL
  const WS_BASE = 'wss://wrj.shuixiongit.com/ws/chat?userId=';
  // const WS_BASE = 'wss://wrj.shuixiongit.com/ws/chat?userId=';
  const WS_BASE = 'ws://218.202.104.82:38201/ws/chat';
   // 消息处理
  function messageHandler(payload) {
    console.log('🌐 全局WebSocket收到消息111111111111111111111:', payload)
    // console.log('🌐 全局WebSocket收到消息111111111111111111111:', payload)
    // 先尝试直接处理消息(适用于mobile-web-view的voiceCallDetail页面的消息格式)
    const t = (payload.type || '').toString()
    // const bizCode = payload.biz_code || ''
    callStatus.value = t
    console.log('📋 消息分析:type=' + t )
    console.log('222222222222222222',t,'----------------',callStatus.value,'----------------')
    // console.log('📋 消息分析:type=' + t )
    // 处理语音通话请求
    if (t === 'call') {
      console.log('📞 全局收到来电 call,来自', payload.from)
@@ -77,11 +79,10 @@
  // 初始化WebSocket连接
  function initWS() {
    const userStore = useUserStore()
    accessToken.value =userStore?.userInfo.access_token
    try {
      if (callStatus.value === 'accept') {
        console.log('📞 通话中,跳过WebSocket初始化');
        return;
      }
      websocketService.setOnMessageCallback(messageHandler);
      // 获取当前用户ID,优先使用store中的用户信息
@@ -93,38 +94,22 @@
        websocketService.init(userId, WS_BASE);
        // console.log('🌐 全局WebSocket初始化成功,用户ID:', userId);
      } else {
        // websocketService.connect();
        websocketService.connect();
      }
    } catch (error) {
      // console.error('❌ 全局WebSocket初始化失败:', error);
    }
  }
  // 监听用户信息变化,初始化WebSocket
  watch(
    () => [userStore.userInfo, callStatus.value],
    ([newUserInfo,newValue]) => {
      if (newValue === 'accept') {
        console.log('📞 通话中,跳过WebSocket初始化');
        return;
      }
      // 不管是否有连接,都调用initWS来确保连接和消息处理器正常
      initWS();
    },
    { immediate: true, deep: true }
  )
  watch(
    () => callStatus.value,
    (newValue) => {
      console.log('监听callStatus.value',newValue);
      if (newValue === 'accept') {
        console.log('📞 通话中,跳过WebSocket初始化');
        return;
      }
      websocketService.connect();
    }
      initWS();
    },
    { immediate: true, deep: true }
  )
}