Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Socket.io 套接字Io客户端在Vue Componet上创建多个侦听器_Socket.io_Vue.js_Vuejs2 - Fatal编程技术网

Socket.io 套接字Io客户端在Vue Componet上创建多个侦听器

Socket.io 套接字Io客户端在Vue Componet上创建多个侦听器,socket.io,vue.js,vuejs2,Socket.io,Vue.js,Vuejs2,我使用Vue.js作为前端框架 我正在使用创建的生命周期挂钩在组件上添加socket.io侦听器 created () { // socket listener this.$socket.on('event', (response) => { .... }) } 现在,如果卸载组件,然后再重新安装,那么将创建两个侦听器 我试着用“once”代替“on”,但问题是一样的 如何确保只有一个侦听器处于活动状态 注意:套接字组件作为实例属性添加到Vue中。您没有说明$socket

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

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

created () {
    // socket listener
    this.$socket.on('event', (response) => { .... })
}
现在,如果卸载组件,然后再重新安装,那么将创建两个侦听器

我试着用“once”代替“on”,但问题是一样的

如何确保只有一个侦听器处于活动状态


注意:套接字组件作为实例属性添加到Vue中。

您没有说明
$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)
}

我将方法
RemovelListener
设置为关闭,但根据库的不同,它可能是用于删除侦听器的其他方法。

为什么不使用?感谢您的回复。$socket保存连接期间创建的IO对象。我会试试你的解决方案,如果可行,我会把它标记为正确的。