Jason2zi 2022-07-28 16:08 采纳率: 61.5%
浏览 85
已结题

调用Websocket对象报错

我在父级页面和子组件同时调用connectWs();就会报错Uncaught DOMException: An attempt was made to use an object that is not, or is no longer, usable,求分析报错的原因,非常感谢。
以下是public封装的方法

export default {
  install: function (Vue) {
    Vue.prototype.connectWs = function (subscribeArr) {
      if (typeof (WebSocket) == undefined) return
      if (ws == null || ws.readyState != 1) {
        let profitOld = "--", rateProfitOld = "--";
        ws = new WebSocket(store.state.wsUrl)
        store.state.ws = ws;
        ws.onopen = (ddd) => {
          ws.send(wsLoginBag(this.$md5, subscribeArr));
          wsInterval = setInterval(() => {
            ws.send(JSON.stringify({command: 3}))
          }, 6000)
        }
        if (localStorage.newPriceKey) {
          newPrice = JSON.parse(localStorage.newPriceKey)
        }
        ws.onmessage = (e) => {
          let data = JSON.parse(e.data);
          let body = data.body
          if (data.command == 11) {
            ws.send(wsChangeDestine(subscribeArr));
            return
          }
        ws.onerror = (err) => {
          clearInterval(this.wsInterval)
        }
        ws.onclose = (err) => {
          clearInterval(this.wsInterval)
        }
      } else {
        ws.send(wsChangeDestine(subscribeArr));
      }
    }


  • 写回答

1条回答 默认 最新

  • 不吐泡泡的咸鱼 2022-07-28 16:30
    关注

    尝试将else的条件换成else if(ws != null && ws.readyState == 1) 保证发送消息时,ws处于正确状态

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月5日
  • 已采纳回答 7月28日
  • 创建了问题 7月28日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装