Можно ли синхронизировать состояние vuex между устройствами? - PullRequest
0 голосов
/ 16 октября 2018

Я хочу, чтобы один и тот же пользователь, авторизованный на разных устройствах, взаимодействовал с сайтом при изменении состояния, чтобы оно синхронно изменялось на всех устройствах.

Back-Ender просит реализовать механизм через веб-сокеты + инструкции о изменении состояния с сервера (!) .Он говорит, что в реагировать-избыточно он вызывает действие с типом и некоторой полезной нагрузкой .Но у vuex есть две сущности : мутации и действия , что добавляет сложности!Особенно, когда хранилище пространства имен по модулям.Буду благодарен за любую помощь.

1 Ответ

0 голосов
/ 17 октября 2018

Нет никакого способа, которым vuex автоматически сделает это за вас.

Использование веб-сокетов наверняка поможет вам в развитии этой функциональности.Для этого вам следует привязать свой веб-сокет к вашему экземпляру хранилища vuex, и когда новые данные будут получены, вы передадите эти новые данные в свой vuex.

  1. Пользователь добавляет новые данные в некоторый клиент.
  2. Сервер добавляет его в базу данных.
  3. Сервер отправляет эти данные через websocket другим клиентам
  4. Другие клиенты получают новые данные
  5. Клиенты передают новые данные в хранилищеКомпоненты, зависимые от этих данных, будут автоматически обновляться

То, что вы собираетесь реализовать, - это своего рода база данных в реальном времени.Firebase может помочь вам в реализации этого, так как он выполняет шаги с 1 по 4.

То, что вы должны сделать в firebase, будет выглядеть примерно так:

для сохранения данных

firebase.database().ref('/some/path').push({a:1, b:2})

чтобы получить это изменение на клиентах после его сохранения

firebase.database().ref('/some/path').on('child_added', (snapshot) => {
    const newData = snapshot.val()
    //newData will be {a: 1, b: 2}
    //here you would commit this data in to your store

    //this callback will be called always when a 
    //object is pushed to '/some/path', so you only have to setup this once
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...