我正在寻找一个能让我在多个用户(ala Google Docs)之间实时同步文本的库。运营转型库?
我已经偶然发现了运营转型,这似乎符合我的需求。话虽如此,我了解OT的要旨,但不了解OT的数学和实施。
因此,我想知道是否有一个drag'n'drop Javascript库会挂钩到文本区域,生成转换,然后允许我将这些转换应用到另一个客户端?
(我已经得到了EtherPad的源,但我不能使头部或尾部出来。如果有人能指出如何在EtherPad的的OT实现充分利用,那将是巨大的!)
我正在寻找一个能让我在多个用户(ala Google Docs)之间实时同步文本的库。运营转型库?
我已经偶然发现了运营转型,这似乎符合我的需求。话虽如此,我了解OT的要旨,但不了解OT的数学和实施。
因此,我想知道是否有一个drag'n'drop Javascript库会挂钩到文本区域,生成转换,然后允许我将这些转换应用到另一个客户端?
(我已经得到了EtherPad的源,但我不能使头部或尾部出来。如果有人能指出如何在EtherPad的的OT实现充分利用,那将是巨大的!)
我认为Google Wave的OT实施的部分内容是开放源代码(以及更多部分即将推出)。
我不知道如果这是你在找什么,但OT另一种是Differential Synchronization:
您可以与Cedanet联系。尽管Ceda是封闭源代码,并且他们的网站上没有免费试用版。我一直参与Ceda的开发,并继续在商业项目中使用它,所以如果你走上这条道路,我可能会提供一些反馈/建议。
OT库:
内HWIOS WebSocket的项目,我已经成功地在客户方使用两个(PY-infinote的组合在服务器端,jinfinote )来同步文档状态。
还检查了这些JavaScript库:
我的事情etherpad.org与EtherPad的精简版是优于其他解决方案。
你能用一些例子来证实etherpad的优越性吗? – 2015-04-13 11:27:10
有了一个js客户LIB(Strophe.js),你可以使用免费的XMPP服务器(如jabber.org)与我的客户端OT LIB(JSOTTEST)一起建立一个完整的客户端 - 服务器系统。
当我有时间修改代码时,我将提交演示客户端 - 服务器聊天系统的src。
大约两年前,你写下“我将提交演示的源代码...”。你有没有完成该演示? – 2013-09-08 13:50:28
对不起...但我没有时间发布公开演示!但是使用Bosh lib for php非常简单!再见 – user981836 2014-05-05 22:31:31
其中一位前Wave工程师发布了名为ShareJS的协作编辑算法的Coffeescript实现,现在名为ShareDB。
ShareJS可能比MobWrite用Google的Diff和Patch更简单,记录更好,可重用性更高。 – 2012-08-21 00:35:57
NPM有node.js的一些不错的OT库:
我们正在构建一个协作编辑器,将操作转换与版本相结合。这样我们就可以同时支持离线和在线协作。我们昨天发布了自己的OT库,作为我们的开源堆栈的一部分。
http://interior.substance.io/modules/operator.html
我们还贡献了库版本。
的ot.js文库https://github.com/Operational-Transformation/ot.js可以是用于多用户的情况有用。
我将总结我找到的解决方案。
运营转型:例如,
差分同步:
CRDT(可交换复制数据类型):
Google Drive API使用OT not DS。 https://developers.google.com/drive/realtime/conflict-resolution – 2015-04-17 13:37:52
我已经写了一个小unixy(做一两件事,把它做好)实现的OT库控制层,允许您插入不同的OT类型(支持所有符合JS标准的类型)。 它与shareJS相似,但较少自以为是,更抽象。
交钥匙,或“拖放”到这个问题的解决方案还没有真正存在由于可靠的同步共享的可变状态的复杂性。 dmonad的回应是一个体面的综合报道,我发布了一个更新的可用解决方案概览here。这个问题是相当古老的,但Convergence(免责声明:我是一个创始人)提供了最全面的交钥匙解决方案,不仅提供数据同步,还提供了大量其他API用于构建协作用户体验。 Here is an example准确显示您请求的内容:跨多个客户端的文本字段的同步。
否则,ShareDB是一个很好的开源解决方案,可以满足很多人的需求。
Diff-Match-Patch与Neil Frasier的差分同步纸(http://neil.fraser.name/writing/sync/)结合起来了! 非常感谢您指点我正确的方向。 – gamers2000 2010-01-14 14:11:24
此解决方案仅适用于纯文本吗? – Jimmy 2011-03-06 08:42:01
根据我的理解,Diff-Match-Patch和扩展名MobWrite(因为后者使用前者)仅支持文本,而不支持二进制更改。但是,有一个与HTML表单元素协作的演示,这将表明它不仅支持纯文本。 – gamers2000 2011-04-23 02:59:21