vue-socket.io-extended icon indicating copy to clipboard operation
vue-socket.io-extended copied to clipboard

Add a `uninstall` or `reset` method

Open JonLev opened this issue 6 years ago • 4 comments

Hi,

I use this great lib for a chat widget, with the constraint to have the possibility of a dynamic reset. The issue is that when I make the reset I need to re-set the socket instance used by VueSocketIOExt with new parameters. What I do today is:

// First set-up
Vue.use(
        VueSocketIOExt,
        io(SOCKET_URL, OPTIONS),
)
// Before the reset
Vue.prototype.$socket.client.close();
Vue.prototype.$socket.client.destroy();
// Then the reset happening:
Vue.use(
        VueSocketIOExt,
        io(SOCKET_URL, MY_NEW_OPTIONS),
)

It seems that do not work because of VueJS use logic that do not apply all operations if the module was already installed: https://github.com/vuejs/vue/blob/399b53661b167e678e1c740ce788ff6699096734/test/unit/features/global-api/use.spec.js#L20

The result is that the emission try to use the old instance of SocketIO client and not the new one I just set. Would you consider in your roadmap to split the installation and the set of the SocketIO client ? today I need to do some hack like:

    const installedPluginIndex = Vue._installedPlugins.indexOf(VueSocketio);
    if (installedPluginIndex > 0) {
        Vue._installedPlugins.splice(installedPluginIndex, 1);
    }

but depending of VueJS core keys and that's not good...

JonLev avatar Aug 26 '19 14:08 JonLev

@probil: This is a bit over my head, but a comment to this post suggests that this Vuex method may demonstrate a way to un-use / uninstall a Vue plugin. Will try to research more later.

capndave avatar Sep 07 '19 17:09 capndave

I need this. My current project requires me to implement server selection for the users. When connecting to the first server, users cannot just "logout" and connect to a different one. Any way around this ?

ingles98 avatar Jun 02 '20 12:06 ingles98

Any news on this? Many thanks

disolva avatar Mar 24 '21 09:03 disolva

We also have a similar condition designing a SPA where we want to change socket connection on route change, depending upon route params.

I tried destroying the this.$socket.client object but this plugin seems not to emit events on the new connection

cybersupernova avatar Jul 24 '21 09:07 cybersupernova