@Azperin
Дилетант

Правильное расположение подписок на сокеты во vue?

На текущий момент сайт без каких-либо сборок и vuex'ов, в компонентах через методы вызываются эмиты, а ответы принимает второй инстанс vue, который является что-то вроде глобальной переменной.

Хочу переделать с использованием vue-cli. И вот тут у меня возник вопрос, где будет правильно ставить подписку на события извне ? В экшенах vuex или сразу в мутациях или же вообще за пределы выносить. Все мутации происходят только с подачи сигналов из сокета, ну крому авторизации, она через ajax.

Как это выглядит у сейчас
var bus = new Vue({
//служит в роли глобал стейта
data: {
//соответствено все переменные состояния здесь
},
methods: {
  //это функция вызывается подписки
  subOnEvents: function() {
    socket.on('some1',function(e) { 
      //отсюда уже происходят изменения стейта ака мутации
    })
    .on('some2',function(e) {}) 
    .on('some3',function(e) {}) 
    .on('some4',function(e) {}) 
    .on('some5',function(e) {});
  },
  created: function() {
    //здесь ajax на авторизация и вызов метода на подписку сокетов
  }
}
});

var vm= new Vue({
//используется просто как маунт
el: '#app',
router
});

все компоненты находятся прямо в роутере как html код
{
  path: 'some',
  component: {
    template: '<div @click="userWantSomeChanges()">Прям вообще все</div>',
    methods: {
      //и из их методов уже идут эмиты на сервер
      userWantSomeChanges: function() {
        socket.emit('serverSideSocket', { bus.user.id };
      }
    }
  }
}


Даст ли какие-либо преимущества переход на cli-vue + vuex + сборка, при условии что над проектом всегда будет работать 1 человек. Из очевидных для меня, это только меньший размер основного скрипта и все.
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы