所以,我的应用程序中有一个谷歌文档类型功能,可以由多个用户同时编辑。 当只有一个用户更新文档时, Diff-match-patch对我来说很好。
但是当假设文档已经由 user1 更新并且它没有传递给 user2(由于套接字错误或网络错误)时,它会生成错误的数据。
例如 - “堆栈溢出为 55666。” 是我的文档,正在由多个用户编辑。现在,user1 将其更改为'Stack overflow is 6.'
并计算 diff 并将其发送到服务器,但在此之前 user2 已经将其更改为其他内容,例如'Stack overflow is 25552.'
. 现在,当应用补丁(来自 user1)时,它产生了错误的结果,可能是
'Stack overflow is 252.'
那么如何管理它以实现并发更新呢?我可以使用 Socket,如果其他人更改,我会将更改发送给其他用户,以便他们可以获得最新更新的数据,但如果更改很多,则 UX 可能会很糟糕,因为其他用户可能会看到视图中的随机更改。