115得票14回答
操作转换库?

我正在寻找一个库,可以让多个用户实时同步文本(类似谷歌文档)。 我发现了操作转换(Operational Transformation),它似乎符合我的需求。不过,我只是大致了解OT的概念,但并不了解OT的数学原理和实现方法。 因此,我想知道是否有一个可拖放的JavaScript库,可以连...

108得票2回答
OT和CRDT之间的区别

有人能简单地解释一下操作转换和CRDT之间的主要区别吗? 据我所知,两者都是算法,允许分布式系统不发生冲突地在不同节点上汇聚数据。 在哪种情况下会使用哪种算法? 据我所知,OT主要用于文本,而CRDT更通用,可以处理更高级的结构,对吗? CRDT比OT更强大吗? 我问这个问题是因为...

51得票1回答
谷歌文档如何处理编辑冲突?

我一直在尝试编写自己的JavaScript编辑器,具有类似Google Docs的功能(允许多个人同时使用)。 我不明白其中一件事:假设您有用户A和用户B,它们之间的网络延迟为10毫秒。我假设编辑器使用差异系统(就像我理解Docs所做的那样),其中编辑内容表示为“在索引3处插入'text'”,...

19得票3回答
如果将结构化文档(如HTML)简单地视为纯文本,那么操作转换是否适用?

谷歌Wave协议的常见问题解答中表示,HTML“没有理想的属性”,而且“如果不是不可能的话,HTML会使操作转换(OT)变得困难”[1]。为什么会这样?如果将HTML简单地视为纯文本,然后应用OT会出现什么问题? http://www.waveprotocol.org/faq#TOC-Wh...

10得票2回答
Meteor.js中的操作转换?

Meteor.js是否支持操作转换(Operational Transformation)? 我正在开发一个类似Etherpad的项目,考虑使用Meteor.js(我认为它非常适合这种项目)。如果想让我的项目可扩展性更强,则操作转换是非常重要的。据我了解,meteor.js并不原生支持操作转...

8得票3回答
为什么Google Docs操作转换更偏向于删除?

今天尝试了这个实验:为Google文档打开了两个离线编辑器。在一个编辑器中,我加粗了第一个单词。在另一个编辑器中,我删除了它。无论我先打开哪个客户端,这个单词总是被删除。 首先,为什么会出现这种情况 - 我理解操作转换的顺序很重要?在两个人分别输入 "a" 和 "b" 的简单例子中,如果服务...