如何在通过websockets接收服务器时保持状态?

时间:2015-06-15 12:24:17

标签: reactjs flux

我有一个带有websockets的react / flux应用程序,工作正常。所有通信都发生在我的WebSocketUtils文件中。每当我从服务器接收新数据作为推送事件时,我会触发action并让整个Flux流程发生。最终导致我的观点重新出现。

各个视图通过Higher Order Components连接到我的商店。所有新数据都作为道具传递到我的view。由于这些是可更改的,我使用这些道具并将它们设置为我的初始状态(which is ok)

现在让我们说我有用户A和用户B查看我的应用程序的相同视图(当然是在不同的计算机上)。

  1. 用户A编辑了一些数据
  2. 用户B也编辑了一些数据
  3. 用户A保存此新数据​​
  4. 用户B通过推送事件接收新数据,视图将重新呈现
  5. 问题:用户B丢失了已编辑但尚未保存的所有数据。

    任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

用户WiredPrairie的评论是正确的。这不是React或Web Sockets问题,而是解决冲突的问题。

在那种情况下,您期望看到什么?您可能希望暂时保留这两个状态,直到您可以自动合并它们(不太可能)或向用户显示某种界面以查看其更改。

您还可以提示用户B用户A正在编辑他们的数据,只是为了让他们知情:)

精细的编辑方法会有所帮助 - 就像在Google电子表格中一样,用户通常一次只能编辑一个单元格,因此在您的情况下,您只能通过网络发送字段级信息(而不是记录级别) ),这将有助于避免冲突。

在一天结束时,这不是关于特定技术,而是关于您的应用程序的更多信息:您需要弄清楚您希望它的行为方式。