@tarasikgoga

Как поменять токен в vue-socket.io-extended в установленном соеденении?

Использую 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();


но устанавливается соединение со старым токеном, почему и как это исправить?
  • Вопрос задан
  • 1069 просмотров
Решения вопроса 1
@tarasikgoga Автор вопроса
this.$socket.disconnect();
          this.$socket.query = `token=${newVal}`;
          this.$socket.io.opts.query = `token=${newVal}`;
          this.$socket.open();


вот так работает
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Artray
this.$socket.io.opts.query = { 
  token: newVal
};
this.$socket.io.connect();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы