实时协作富文本编辑

Real-time collaborative rich text editing

本文关键字:文本编辑 协作 实时      更新时间:2023-09-26

我想为我的Web应用程序提供一个实时协作富文本编辑器。到目前为止,我已经做了很多研究,我真的有点沮丧,因为那里没有合适的东西。问题是,每个解决方案都与编辑器紧密耦合(例如,Firepad使用CodeMirror/Etherpad使用Etherpad)。我只发现另外两个有趣的解决方案:

  • ShareJs->仅适用于纯文本

  • Webstrate->这对我来说是最有前途的。它可以处理DOM同步,因此它可以处理所有可编辑的内容-太棒了!

但Webstrate的问题是,它是一个alpha版本。所以对我来说,这太麻烦了——没有成功。试着让它工作大约2天。文本同步很容易。但它不适用于iframes或其他东西。

我对合作RTE的要求很高——它应该支持:

  • 图像

  • Iframes

  • 视频

  • 文本(当然)

当我正在寻找大约3-4天的解决方案时——也许你们中的某个人有一个提示?会非常温柔;)

您可以尝试http://swellrt.org,是开发实时协作应用程序的完整框架,包括富文本支持和Web编辑器

它提供了一个JS API,类似于GDReal-time API,加上丰富的文本编辑。

编辑器可以扩展以支持任何附件。

它是Apache Wave的一个分支,对原始代码进行了概括。

我发现的最接近的东西是http://quilljs.com/-它有一个API,用于获取和更新文本增量,还用于获取和设置多个标记的光标。它不会为你管理实时编辑,但它给了你足够的工作空间(比我发现的任何其他项目都多)。然而,它在格式方面不如其他编辑器全面(例如,它不支持表和嵌套列表)。它具有一定的可扩展性,因此您可以添加对其他HTML元素的支持。

强大的协作式富文本编辑器仍有一定的优势。大多数基于网络的文本编辑器分为两类。

  1. 那些与实时协作兼容,但功能相当有限(例如,没有表,没有嵌套元素等)
  2. 这些是非常强大的基于web的富文本编辑器,但缺乏与实时技术集成的API

然后是协作引擎,如ShareDB、Google Drive Realtime API、SwellRT和Convergence(完全披露我是Convergence Labs的创始人)。这些类型的系统对数据模型以及如何协调协作都有自己的看法。您最喜欢的富文本编辑器的内部工作方式可能与协作引擎的API不兼容。

简单地同步DOM的技术是有趣的,因为它们通常在编辑器之间是可移植的并且较少依赖于编辑器API,但它们往往缺乏良好协作所需的许多实时编辑功能(共享光标、共享选择等)。这可能很难在引擎本身之外的DOM同步方法之上实现。不幸的是,如果没有这些功能,协作编辑体验就没有那么好了。

有几个项目正试图纠正这种情况。CKEditor的员工正在开发CKEditor 5,它考虑到了合作。此外,在Convergence,我们正试图与许多流行编辑的作者合作,以实现实时合作。

事实是,它仍然是一个相当新的空间,而且发展迅速。没有经过测试的、可扩展的、扣篮式的解决方案可以提供开箱即用的、功能全面、协作、免费和开源的编辑器。2018年的情况似乎有所改善。希望在接下来的12-24个月里,这将成为一个容易得多的问题。