我正在寻找一个可以让我在多个用户之间实时同步文本的库(例如Google Docs)。
我偶然发现了“运营转型”,这似乎很适合我的需求。话虽如此,我了解OT的要旨,但不了解OT的数学或实现。
因此,我想知道是否有一个拖放Javascript库可以挂接到文本区域,生成转换,然后让我将这些转换应用于另一个客户端?
(我已经获得了Etherpad的源代码,但是我无法从中脱颖而出。如果有人可以指出如何利用Etherpad的OT实施,那也将很棒!)
我正在寻找一个可以让我在多个用户之间实时同步文本的库(例如Google Docs)。
我偶然发现了“运营转型”,这似乎很适合我的需求。话虽如此,我了解OT的要旨,但不了解OT的数学或实现。
因此,我想知道是否有一个拖放Javascript库可以挂接到文本区域,生成转换,然后让我将这些转换应用于另一个客户端?
(我已经获得了Etherpad的源代码,但是我无法从中脱颖而出。如果有人可以指出如何利用Etherpad的OT实施,那也将很棒!)
Answers:
我认为Google Wave OT实施的一部分是开源的(还有更多部分即将推出)。
我不确定这是否是您要寻找的,但是OT的另一种选择是差分同步:
一位前Wave工程师发布了一个名为ShareJS的协作编辑算法的Coffeescript实现,现在称为ShareDB。
我将总结找到的解决方案。
运营转型:例如
差分同步:
CRDT(通信复制数据类型):
OT库:
在HWIOS Websocket项目中,我成功地使用了两者的组合(服务器端为py-infinote,客户端端为jinfinote)来同步文档状态。
ot.js库 https://github.com/Operational-Transformation/ot.js可能对多用户方案有用。
还请查看以下Javascript库:
使用js客户端库(Strophe.js),您可以使用免费的XMPP服务器(如jabber.org)以及客户端OT库(JSOTTEST)来构建完整的客户端-服务器系统。
有时间修改代码时,我将提交演示客户端-服务器聊天系统的src。
Npm对于node.js有一些不错的ot库:
我们正在构建一个将操作转换与版本控制相结合的协作编辑器。这样,我们就可以支持离线和在线协作。昨天,我们在开源堆栈中发布了自己的OT库。
http://interior.substance.io/modules/operator.html
我们还提供了一个用于版本控制的库。
我编写了一个小的unixy库(做一件事并做得很好),该库实现了OT控制层,允许您插入不同的OT类型(支持所有与shareJS兼容的类型)。它与shareJS相似,但不那么固执,更抽象。