我正在开发一个与Etherpad相关的项目,我想到了使用Meteor.js(我认为它非常适合这种项目)。如果我想让它可扩展,那么操作转换对我的项目非常重要。我目前的知识表明流星不支持开箱即用的操作转换(如果我错了,请纠正我)。 基本上我的问题是如何在meteor.js中实现操作转换?
我尝试使用这个库google-diff-match-patch,Neil Fraser,但在应用补丁时遇到了问题(虽然它很容易在meteor.js之外工作)。
那么有什么建议吗?
答案 0 :(得分:4)
在看到几个Meteor项目使用OT(即http://cocodojo.meteor.com/)后,我决定进行适当的整合。
我已经创建了一个智能包来将ShareJS集成到流星中。请来看看并添加您的拉取请求:https://github.com/mizzao/meteor-sharejs
答案 1 :(得分:1)
浏览器内协作文本编辑器有两个主要组件:文本区域本身,在协调用户键入与从服务器接收的其他编辑时必须表现良好;以及用于发送,接收和组合这些编辑的数据模型。
Meteor今天并没有特别为这些事情提供特殊帮助,但它确实提供了实时数据传输,以及一种在客户端和服务器之间自动移动数据的方法。
如果我要在Meteor上实施EtherPad,我一直想象我会将一个集合用作“操作日志”。用户更改将被发送到服务器,在那里它们将被附加到操作的官方日志(基本上是差异),这将自动流式传输到所有客户端。客户端的工作是应用差异,并将其与尚未被服务器确认的输入进行协调。
这是一项艰巨的实施挑战。祝你好运!