稻谷熟了
稻谷熟了
  • 发布:2023-11-01 16:28
  • 更新:2023-11-01 16:28
  • 阅读:150

uni 对象为空 加上console 就不会报错了 是什么情况

分类:uni-app

uni 对象为空 在调用前提前 console 出 uni 对象就不会报错

在调用前提前 console 出 uni 对象就不会报错

请问各位有遇到这种情况吗

以下是 调用的js 代码

import Stomp from 'stompjs'  

let socketOpen = false  
let socketMsgQueue = []  

const obj =  {  
  client: null,  
  init(url, header ,connectWS) {  
    if (this.client && this.client.connected) {  
        console.log("this.client ws缓存");  
        console.log(this.client);  
      return Promise.resolve(this.client)  
    }  

    return new Promise((resolve, reject) => {  
      const ws = {  
        send: this.sendMessage,  
        onopen: null,  
        onmessage: null,  
      }  
      uni.connectSocket({ url, header })  

      uni.onSocketOpen(function (res) {  
        console.log('WebSocket连接已打开!', res)  
        socketOpen = true  
        for (let i = 0; i < socketMsgQueue.length; i++) {  
          ws.send(socketMsgQueue[i])  
        }  
        socketMsgQueue = []  
        ws.onopen && ws.onopen()  
      })  

      uni.onSocketMessage(function (res) {  
        // ios 缺少 0x00 导致解析失败  
        if (res && res.data) {  
          let value = res.data;  
          let code = value.charCodeAt(value.length - 1);  
          if (code !== 0x00) {  
            value += String.fromCharCode(0x00);  
            res.data = value;  
          }  
        }  
        ws.onmessage && ws.onmessage(res)  
      })  

      uni.onSocketError(function (res) {  
        console.log('WebSocket 错误!', res)  
      })  

      uni.onSocketClose((res) => {  
        this.client = null  
        socketOpen = false  
        console.log('WebSocket 已关闭!', res)  
        if(res.code !== 1000){  
          setTimeout(()=>{  
            connectWS()  
          },3000)  
        }  
      })  

      Stomp.setInterval = function (interval, f) {  
        return setInterval(f, interval)  
      }  
      Stomp.clearInterval = function (id) {  
        return clearInterval(id)  
      }  

      const client = (this.client = Stomp.over(ws))  
      // 关闭连接  
      client.close = () =>{  
        uni.closeSocket()  
      }  
      client.connect(header, function () {  
        console.log('stomp connected')  
        resolve(client)  
      })  
    })  
  },  
  sendMessage(message) {  
    if (socketOpen) {  
      uni.sendSocketMessage({  
        data: message,  
      })  
    } else {  
      socketMsgQueue.push(message)  
    }  
  },  
}  
console.log("WebSocket obj")  
console.log(obj)  

export const webSocketUtil = obj
2023-11-01 16:28 负责人:无 分享
已邀请:

要回复问题请先登录注册