是否可以使用文本区域进行实时协作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以使用文本区域进行实时协作?相关的知识,希望对你有一定的参考价值。

我正在开发一个需要实时协作的应用程序。我打算使用cshtml文本区域来允许用户输入。是否可以使用文本区域实现实时协作?

另外,我已经阅读了一些关于运营转型的内容。可以使用.net框架实现吗?

我只是一个初学者,对于帮助我实现实时协作的算法知之甚少。任何帮助将不胜感激。

提前感谢你。

答案

ShareJS是免费的,使用node.js来实现你想要的,并实现OT2算法

对于.Net,没有开箱即用的运营转型,但你可以看看BeWeeBee SDK,(虽然是商业软件)

另一答案

我正在开发一个需要实时协作的应用程序。我打算使用cshtml文本区域来允许用户输入。是否可以使用文本区域实现实时协作?

这实际上取决于您想要提供的用户体验。如果你想为一个用户锁定textarea而另一个用户正在编辑,那么这可能不是最好的用户体验,但它绝对相对容易。

如果您希望两个或更多用户能够同时编辑同一文本区域,那么使用data_changed在用户之间发送realtime web technology事件相当容易,但您需要处理用户之间的textarea内容同步并处理碰撞检测。对此的用户体验也要复杂得多。

另外,我已经阅读了一些关于运营转型的内容。可以使用.net框架实现吗?

我不得不查找operational transformation,它部分回答了有关用户体验的问题 - 它是非阻塞的。浏览维基文档时,我会问一个问题:为什么不可能?您可以在所有用户/应用程序之间即时通信以通知他们更改(如所述:使用实时Web技术),因此您只需要实现和管理所有聪明的算法:)(我不知道是否有组件那将为你管理)

对于自托管的.NET实时Web技术,您可能需要查看SignalRXSocketsSuperWebSocketWebSync

如果你想要更快地起床和跑步,你可能会看一下hosted realtime web technology

另一答案

这是一个老问题,但有一些额外的信息可能会有所帮助。正如之前的答案所提到的,基于文本的数据同步有几种选择。其中许多基于Operational TransformationCRDTs。这些方法在SDK中以多种语言实现。 (完全披露,我恰好是Convergence的作者之一)。

但是,您还需要考虑实现协作编辑所需的一些其他功能。例如:

  • 在场:谁在跟你编辑?
  • 协作意识:共享游标和选择之类的东西?
  • 本地与组撤消:当用户点击control-z时会发生什么?他们是撤消他们做的最后一个动作,还是其他远程用户做的最后一个动作?
  • 历史:了解当多个人同时编辑时谁做了更复杂的事情。当一个用户点击保存时(如果有保存),他们可能正在保存另一个用户执行的操作。

这些只是协作编辑中除了数据同步之外需要考虑的几个例子。当出现这些问题时,大多数答案都只关注数据同步框架。在Convergence Labs,我们帮助人们设计协作编辑应用程序并实施了许多此类应用程序。我们已经多次看到,如果你所有的数据同步,用户体验非常差,用户将不喜欢该应用程序。

因此,在选择框架时,寻找可以帮助您实现实时编辑的其他方面的内容,或者至少准备好在您选择的任何工具之上自己实现它们。

以上是关于是否可以使用文本区域进行实时协作?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 matplotlib 图例选择器选择图例文本区域而不是图例行?

如何使用 MySQL 在 PHP 中创建不断更新的文本区域?

如何在文本区域标签中的特定光标位置插入选择标签下拉值作为文本片段?

是否可以使用来自 AJAX 调用的数据更新文本区域元素? [关闭]

在控制器中编辑文本区域

在线协同代码编辑ide