是否可以在设备之间同步vuex状态?

时间:2018-10-16 00:56:10

标签: websocket vuejs2 synchronization vuex

我想让状态不同的用户在不同设备上获得授权,与站点进行交互,以便在所有设备上同步更改。

Back-Ender要求通过 Web套接字 +如何从服务器(!)更改状态来实现该机制。 他说,在 react-redux 中,他用 type 和一些 payload 调用动作。 但是vuex具有两个实体变异动作,这增加了复杂性!特别是当store由模块命名空间时。 我将不胜感激。

1 个答案:

答案 0 :(得分:0)

vuex不可能自动为您执行此操作。

使用websocket无疑会帮助您开发此功能。为此,您应该将websocket绑定到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
})