Начать подключение через сокет после некоторого действия vuejs

Мне нужно работать с сокетом IO. Я делаю код из официальных документов

import VueSocketio from 'vue-socket.io'
import socketio from 'socket.io-client'
Vue.use(VueSocketio, socketio('http://b5870557.ngrok.io'), store)

Вставьте этот код в мой vuex main.js. Но он устанавливает соединение, когда я открываю свою первую страницу. Но я должен открыть соединение после того, как я скачаю страницу или нажму кнопку. Но если я напишу действие

 setSocketConnection({commit}, url) {
        Vue.use(VueSocketio, url)
        commit('SOCKET_CONNECT')
    }

и назовите это нужным местом

created() {
    this.$store.dispatch('setSocketConnection', 'MySocketUrl')
}

я не могу получить какие-либо сообщения, я имею в виду, что слушатель событий не работает

sockets: {
  someEmit: function(data) {
                console.log(data)
            }
}

1 ответ

Если вы используете vue-router, вы можете сделать следующее:

{
   path: '/BB',
   name: 'BB',
   component: BB,
   beforeEnter (to, from, next) {
      if (!Vue.prototype.$socket) { 
         Vue.use(VueSocketio, WS_URL)
      }
      next()
   }
}

Источник: Как отключить vue-socket.io в некоторых компонентах vue-router

Другие вопросы по тегам