vue.js - 页面刷新后如何在Vuex中重新打开websocket连接?
问题描述
用户注册到我的应用程序后,一个组件向 Vuex 发送一个操作,以开始使用 Websocket 侦听来自服务器的更新请求。
Vuex 动作:
const socket = io(url);
socket.on(id, data => {
...
我正在使用 Vuex-persisted 来使用 LocalStorage 来存储状态。但是,如果用户刷新浏览器,websocket 连接就会丢失。如果我将套接字包含在 Vuex 状态中,我会收到以下错误:
vuex-persistedstate.es.js?0e44:1 Uncaught (in promise) TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Socket'
| property 'io' -> object with constructor 'Manager'
| property 'nsps' -> object with constructor 'Object'
--- property '/' closes the circle
由于 Vuex 没有生命周期钩子,刷新后如何恢复 websocket 连接?
此外,Vuex 应该在刷新后始终从后端刷新状态,以确保在 websocket 连接断开时不会丢失任何更新请求事件。
解决方案
推荐阅读
- java - JavaFX 无法连接到 MYSQL
- php - Docker 与 Doctrine 生成代理
- sql - 如何计算自定义时间(如上午 8:30 到下午 18:00)之间的天数是一天 oracle sql 查询
- python - 将嵌套的 json 值列表更改为数组
- mysql - MySql + EF 6 GroupBy 导致 NullReferenceException
- flutter - 我们如何根据颤动的条件更改视图可见性?
- javascript - 将 keyCode 转换为 key
- python - 在python的嵌套字典中应用循环时出错
- javascript - vue.js 动态图片加载
- php - 如何在最新的贝宝结账时启用未来付款