vue使用sockjs报错The connection has not been established yet

参考:https://blog.csdn.net/hzzhoushaoyu/article/details/49407835

 

import SockJS from "sockjs-client";

// websocket 配置
  stompClient: any = null;  

// 连接websocket
  connection() {
    const that = this;
    // 建立连接对象
    let socket = new SockJS(`http://xxxx`, null, { timeout: 50000 });
    // 获取STOMP子协议的客户端对象
    that.stompClient = Stomp.over(socket);
    that.stompClient.debug = (str: any) => {
      // console.log(str + "\n");
    };
    // 向服务器发起websocket连接
    that.stompClient.connect(
      that.headers,
      // 订阅服务
      () => {
        that.stompClient.subscribe("/xxxx", (msg: any) => {
          // 订阅实时趋势数据
          if (msg.body) {
            const res = JSON.parse(msg.body);
            const items = res.data.datas.length > 0 ? res.data.datas : null;
            if (items) {
              // that.chart.appendData({
              //   seriesIndex: 0,
              //   data: items
              // })
              that.sourceData = that.sourceData.concat(items)
              that.updateChart()
              that.updateTime = moment(items[items.length - 1][0]).format('YYYY-MM-DD HH:mm:ss')
            }
          }
        });
        that.stompClient.subscribe("/user/queue/error", (msg: any) => {
          // 订阅错误消息
          console.log("错误消息", msg);
          that.$notification.error({
            message: '错误消息',
            description: msg
          });
        });
      },
      // 错误处理
      (err: any) => {
        // 连接发生错误时的处理函数
        console.log("连接失败", err);
        // that.$notification.error({
        //   duration: 99,
        //   message: '连接失败',
        //   description: err
        // });
        // 连接失败后1秒后重新请求数据并连接
        setTimeout(() => {
          that.stompClient = null;
          that.resetHeader()
          that.connection()
          that.getSourceData()
        }, 1000)
      }
    );
  }

  // 断开连接
  disconnect() {
    this.resetHeader()
    if (this.stompClient) {
      this.stompClient.disconnect();
      this.stompClient = null;
    }
  }

使用SockJS连接还没建立起来,往通道发送数据,会报错

The connection has not been established yet

如果使用WebSocket会报这个错

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

 

评论 1 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:程序猿惹谁了 设计师:我叫白小胖 返回首页

打赏作者

普通网友

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值