【问题标题】:Socket Io client creates multiple listener on Vue ComponetSocket Io 客户端在 Vue 组件上创建多个监听器
【发布时间】:2018-05-21 08:40:01
【问题描述】:

我正在使用 Vue.js 作为前端框架。

我正在使用创建的生命周期挂钩在组件上添加 socket.io 侦听器。

created () {
    // socket listener
    this.$socket.on('event', (response) => { .... })
}

现在,如果组件被卸载并稍后重新安装,则会创建两个侦听器。

我尝试使用“once”代替“on”,但同样的问题。

如何确保只有一个 Listener 处于活动状态?

注意:socket 组件是作为实例属性添加到 Vue 中的。

【问题讨论】:

标签: socket.io vue.js vuejs2


【解决方案1】:

你没有说$socket是什么,但是你处理这个的方式是在组件被销毁时移除监听器。

methods:{
  handleEvent(response) { ... }
},
created(){
  this.$socket.on('event', this.handleEvent)
},
beforeDestroy(){
  // using "removeListener" here, but this should be whatever $socket provides
  // for removing listeners
  this.$socket.removeListener('event', this.handleEvent)
}

我基于 this answer 的方法 removeListener 但它可能是删除侦听器的其他方法,具体取决于您的库。

【讨论】:

  • 感谢您的回复。 $socket 保存连接期间创建的 IO 对象。如果可行,我会尝试您的解决方案并将其标记为正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多