Использую Nuxt.js, подключаю через плагин такой код:
import Vue from 'vue'
import VueSocketio from 'vue-socket.io-extended'
import socketio from 'socket.io-client'
export default ({app, store, nuxtState, req, route}) => {
let socket = socketio('http://localhost:5003', {
autoConnect: false,
transports:['websocket'],
query: {
token: store.getters['auth/userHash']
},
});
Vue.use(VueSocketio, socket);
socket.open();
socket.on('connect', () => {
store.dispatch('rooms/socketConnectUpdate', true);
});
socket.on('disconnect', () => {
store.dispatch('rooms/socketConnectUpdate', false);
});
}
Соединение устанавливается, но потом пользователь может нажать кнопку аутентификации через Вк, и соответственно нужно закрыть старое соединение и открыть новое с новым токеном. В компоненте Vue у меня есть вотчер, который следит за изменение vuex, и срабатывает когда токен обновляется. Когда это происходит я пытаюсь обновить токен таким образом
this.$socket.io.disconnect();
this.$socket.query = `token=${newVal}`;
this.$socket.io.connect();
но устанавливается соединение со старым токеном, почему и как это исправить?