V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ksice
V2EX  ›  程序员

如何实现一个共同协作的文件编辑

  •  
  •   ksice · 2022-11-28 11:35:57 +08:00 · 2513 次点击
    这是一个创建于 724 天前的主题,其中的信息可能已经有所发展或是发生改变。

    向万能的 v 友请教一下,如何实现在线协作编辑文档例如 figma 、墨刀这种功能设计,目前找了一个开源的 etherpad-lite ,想讨论一下是否有其他选择

    15 条回复    2022-11-29 15:57:19 +08:00
    GPLer
        1
    GPLer  
       2022-11-28 11:45:54 +08:00 via Android
    可以参考下 am-editor
    https://editor.aomao.com/
    codehz
        2
    codehz  
       2022-11-28 13:13:47 +08:00
    menghechina
        3
    menghechina  
       2022-11-28 13:35:19 +08:00
    onlyoffice 了解一下
    Huelse
        4
    Huelse  
       2022-11-28 14:30:32 +08:00
    行锁+版本
    zhuangzhuang1988
        5
    zhuangzhuang1988  
       2022-11-28 14:36:59 +08:00
    ZSeptember
        6
    ZSeptember  
       2022-11-28 14:57:41 +08:00
    要实现业务需要找一下开源的,比如 share-js 什么,还有上面提到的一些。

    要理解原理,基本都是使用 Operational Transformation 这种方式的,然后不同的实现可能解决冲突的算法不同。

    Operational Transformation 基本思路也很直接,记录用户操作,然后将操作 apply 到一个文档上,返回 apply 的结果。
    ksice
        7
    ksice  
    OP
       2022-11-28 16:55:10 +08:00
    @ZSeptember 嗯呢,好像流行的都是用的 ots 算法,但是感觉 ots 算法很复杂,figma 用的好像是 CRDTs 算法
    ksice
        8
    ksice  
    OP
       2022-11-28 16:56:27 +08:00
    @Huelse 现在流行的好像都是采用 ots 和 crts 算法去做的
    ksice
        9
    ksice  
    OP
       2022-11-28 16:57:31 +08:00
    @zhuangzhuang1988 好的好的,谢谢我去研究一下看看
    ksice
        10
    ksice  
    OP
       2022-11-28 17:01:43 +08:00
    @GPLer 好的好的谢谢
    L1shen
        11
    L1shen  
       2022-11-28 17:16:45 +08:00
    现在新的都是使用 CRDT 来实现协同编辑,
    yjs 的包装可以看下这个 https://syncedstore.org/docs/advanced/richtext
    Facebook 的 lexical 也支持使用 yjs 做协同 https://lexical.dev/docs/collaboration/react
    ZSeptember
        12
    ZSeptember  
       2022-11-28 17:37:05 +08:00
    CRDT 这么 6 ,直接在结构上解决冲突。
    hamsterbase
        13
    hamsterbase  
       2022-11-28 21:51:16 +08:00
    @codehz 这论文不错,之前看了好几遍把里面的数据结构都实现了。
    ksice
        14
    ksice  
    OP
       2022-11-29 09:50:27 +08:00
    @ZSeptember 嗯嗯相对 ots ,crdts 简单一些
    xieqiqiang00
        15
    xieqiqiang00  
       2022-11-29 15:57:19 +08:00
    @menghechina #3 这个怎么感觉是硬抄 office
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1777 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:36 · PVG 00:36 · LAX 08:36 · JFK 11:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.