Vue中websocket ,stomp协议websocket对象存储到全局的问题

发布于 2022-09-11 17:20:33 字数 1309 浏览 41 评论 0

问题描述

我在vue中使用stomp.js插件操作websocket,在连接上之后,将stomp的对象存入sessionstorage中,防止用户刷新浏览器而丢失这个对象

问题出现的环境背景及自己尝试过哪些方法

我采取了两种方法:
1、将websocket对象存到window下,这样子做是可以的,代码逻辑,流程都可以走通,但当浏览器刷新时,这个对象会丢失掉。
2、将得到的websocket对象,即stomp对象用JSON.stringify()存储到sessionstorage中,要用的时候JSON.parse()将对象取出但这种方法报错了,从控制台的打印我可以看到我已经将存入sessionstorage的字符串转回了对象,但依然报错, newTag.send is not a function
图片描述

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
将对象存储进sessionStorage

  let url = 'ws://xxx:9008/websocket',
let stompClient = Stomp.client(url);
 stompClient.connect({'token': token,'courseId':courseId}, function (frame) {
      window.STOMP_CLIENT = stompClient
    let client = JSON.stringify(stompClient)
    sessionStorage.STOMP_CLIENT = client
    }
  )

取出对象使用,报错send is ont a function

  let testTag = sessionStorage.STOMP_CLIENT;
  let newTag = JSON.parse(testTag)
console.log(typeof newTag)
console.log(newTag)
newTag.send('/teamsking/course/sign/start',{'token': token},
  JSON.stringify({
    "bean":beanId,
    "classroomId":classroomId,
    "courseId":courseId,
    "userId":userId
  })
);

你期待的结果是什么?实际看到的错误信息又是什么?

为什么这里会报错呢?按理来说从sessionstorage里取出,转成对象后应该不影响使用的啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文