13|多人协同编辑:野百合的春天为啥来得这么晚?
陈旭
你好,我是陈旭。这一讲我们来说说低代码平台的一个甜蜜的烦恼:多人协同编辑。
为什么说这是一个甜蜜的烦恼呢?因为一旦低代码平台有了这样的需求,就意味着它已经可以开发出有相当复杂度的 App 了,也意味着各方对低代码平台已经有了较强的信心,甚至说它在复杂 App 开发方面已经相当深入了。我们可以说这样的低代码平台已经具备了较强的开发能力。
说它是一个烦恼,是因为往往这个时候的低代码平台已经成型了,底层数据结构必然已经固化。如果平台架构早期未考虑到多人协同的话,此时就很难采用最优解来解决这个需求了,只能退而求次,采用迂回的方法。
那么今天,我们就从多人协作功能的实现难点入手,聊聊它的实现方案和注意事项。
多人协作功能的难点是什么?
面对这个问题,可能你会猜难点是多个编辑器之间的点对点通信和实时数据传输。不可否认,这是一个难点。但现在的 web 技术有太多的解决方案了,WebSocket,WebRTC 等都是极好的解决方案,我推荐优先选择 WebSocket。
因为 WebSocket 更成熟,服务端实现方案多且完善,它更加适用于一对多广播,相对来说,WebRTC 更适合用于 P2P 传输音像多媒体信息,实现更加复杂。更具体的,你可以自己搜下相关资料。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
CRDT算法在低代码平台的多人协同编辑中面临着冲突解决、性能问题和多行属性值合并等挑战。本文提出了解决方案,包括使用临时的影子历史记录、引入懒渲染方式以及对多行属性的处理方法。建议在低代码平台建设之初考虑多人协同编辑需求,并推荐Yjs作为CRDT算法的重点关注对象。作者分享了自己的补救方案,包括解决应用工程数据与开发人员账号强关联的问题和处理冗余数据的归一。文章还讨论了合并数据时可能出现的冲突点和解决冲突的方法。总的来说,CRDT算法作为低代码平台的底层数据保存和历史记录管理功能的基础具有潜在的价值,但需要综合考虑冲突解决、性能和数据结构等方面的挑战。文章还提到Yjs采用了quill的数据结构,只发送增量部分的修改,这是一个很好的特性,节约带宽、使得同步更及时,安全性更好。建议读者可以先引入Yjs这样的CRDT解决方案,为以后的演进留一条路。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《说透低代码》,新⼈⾸单¥59
《说透低代码》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- samam复杂的配置多人协同的冲突问题,我觉得可以考虑加锁来解决,多人同时编辑一个配置本来也不太合理。2022-05-0519
- InfoQ_27c14057950d外链的这块: 常见的非侵入性提示是在侧边弹个气泡,就像这个效果。 点进去就是404,希望作者检查下,文章对观看者的体验极差2023-08-23归属地:北京1
- ifelse学习打卡2023-02-24归属地:浙江
收起评论