Meteor 中的 Etherpad 样式同步



查看 Meteor 以创建一个协作文档编辑应用程序,因为默认情况下 Meteor 在多个客户端之间同步数据真是太好了。

但是当使用文本区域时,如Sameer Kalburgi的例子

http://www.skalb.com/2012/04/16/creating-a-document-sharing-site-with-meteor-js/
http://docshare-tutorial.meteor.com/体验是次优的。

我尝试与同事同时打字,当她打字时,我的更改将被覆盖,反之亦然。所以在冲突解决中还没有合并算法,我想?

这是为该功能计划的吗?目前有没有办法实现这一点?Etherpad似乎很好地处理了这个问题。在 Meteor 中拥有此功能将使创建协作文档编辑应用程序更易于访问。

所以我进一步研究了一下,Etherpad中使用的算法被称为操作转换:

解决方案是运营转型 (OT)。如果您还没有听说过,OT是一类进行多站点实时并发的算法。OT就像实时git。它适用于任何延迟(从零到延长假期)。它允许用户以低带宽进行实时并发编辑。OT为您提供多个用户之间的最终一致性,无需重试,没有错误,也不会覆盖任何数据。

不幸的是,实施OT很糟糕。有一百万个算法具有不同的权衡,大多被困在学术论文中。这些算法很难正确实现且耗时。我们需要一些好的库,所以任何项目都可以在需要时插入OT。

那是来自sharejs的网站。一个基于节点.js ot 服务器客户端,您可以将其挂接到现有客户端中。

OT也在Node.js的Racer模型同步引擎中实现,该引擎构成了Derby的基础。目前,德比.js还没有透明地提供它,但他们也计划,从德比文档中:

目前,Racer 默认按接收顺序应用所有交易,即最后写入者获胜。(...)Racer还支持通过软件事务内存(STM),操作转换(OT)和差异匹配补丁技术的组合解决冲突。

这些功能尚未完全实现,但Racer演示展示了STM和OT的初步示例。

巧合的是,sharejs和derbyjs团队都有一个前谷歌摇摆不定的人。Meteor的核心团队中有一个前etherpad/Google Waver。由于Etherpad是OT最著名的实现之一,我想象Meteor肯定也想在某个时候支持它......


我创建了一个集成 ShareJS 的 Meteor 智能包:

https://github.com/mizzao/meteor-sharejs

现在这是非常初步的,但你可以把它导入你的应用程序中,放textarea,它"就可以工作了"。请尝试一下并通过拉取请求提交一些新功能:)

在此处查看演示:

http://documents.meteor.com

你描述的内容对我来说似乎超出了流星的范围。它不是设置协作可能性的工具!

它提供的是一种透明地处理服务器数据库子集的方法。但是,特定于用例的合并功能的实现是应用程序的工作,而不是框架。

最新更新