背景
atom 编辑器新增一个 teletype 的功能,可以实现多人在线编辑代码。效果看起来挺炫酷,想了解一下是怎么实现的,于是研究了一下。
抽象一下文本文档的协同编辑这个问题,就是同步多个设备之间的操作合并,最后都能达到最终一致的结果。现在解决文本文档的协同编辑有两种方案,一种是 Google Doc 使用的 Operational transformation (OT),还有一种就是 Atom teletype 使用的 Conflict-free replicated data type (CRDT)。
Operational transformation (OT)
Operational transformation 翻译过来就是操作转化,流程也是分为两个部分操作和转换。
Operational 操作
将设备的编辑转换成操作(Operational),发送到服务端。
insert(index, char