Socket.io 套接字Io客户端在Vue Componet上创建多个侦听器
我使用Vue.js作为前端框架 我正在使用创建的生命周期挂钩在组件上添加socket.io侦听器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
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对象。我会试试你的解决方案,如果可行,我会把它标记为正确的。