实现一个多人协作在线文档有哪些技术难点?

想知道实现类似于语雀、石墨文档或腾讯文档等产品的难点在哪些地方?

大体上说,多人协作的在线文档在技术上主要分成三大块:“在线”、“多人协作”和“文档编辑”。

先说“在线”,在线其实就是个B/S或者C/S架构,也就是一个web/native用户端加上一个服务器端。这里的技术难点不算很大,主要就是把数据同步的问题解决了,即如何让用户端的输入及时准确地同步到服务器端,当然同时还要考虑网络传输失败、性能等等问题,这里web侧比较好的一个开源解决方案就是 PouchDB,它可以帮你快速实现数据在浏览器和服务器端的双向同步,有兴趣的可以了解一下。

然后是“多人协作”,本质上是一个分布式系统上常说的 Multiple Leader Duplication,任何一个用户端都可以视为一个 Data Leader,这些 Leader 之间同步数据必然会遇到冲突的问题。

对于 Multiple Leader Duplication 的冲突问题,解决方法也就那么几种:

直接避免产生冲突。具体方法就是不让多个用户同时编辑同一处地方,这种解决方法最有效也最粗暴,具体要看产品形态适不适合这种方案。

把冲突暴露给用户,让用户自己解决。现在大多数专业的版本控制软件就是这么做的,但不适用于在线文档这种大部分用户都是非专业的产品。

给写入操作打上一个全局 index,可以是时间戳,可以是序列号,总之是全局的并且是递增的即可,然后任何冲突的地方,都选择 index 较高的那个写入。这样的好处就是冲突的解决是完全自动化的,不需要用户参与。缺点就是如果遇到同步间隔很长的情况,会丢失很多用户的输入。比如你断网写了一小时文章,然后又连网同步,发现被你同事几分钟前的修改给覆盖了。

1、写 UI,并且把这些 Model 状态映射到 UI 上,这里完全不需要考虑输入,就是很纯净地把一堆 Model 映射到 UI 上。比如文档对象的渲染、编辑器各种状态的实现等等

2、处理用户的输入,修改相应的状态,比如用户在界面空白处点击了鼠标右键,我们需要打开右键菜单,具体做法就是把编辑器状态里的右键菜单设置为打开,并且设置好位置即可。

虽然说起来这么简单,但实际开发的时候确实有很多难点:

用户的输入具有复杂性。比如在一个地方按下鼠标(mousedown),那么光标应该移动过去,但如果用户这时继续拖动鼠标(mousemove),那么就应该是一个拖选事件,如何正确区分点击和拖选就是一个比较麻烦的问题。类似的问题还有快捷键的实现、点击穿透问题,如果有移动端的话还会遇到定制光标样式的问题。

在线文档有哪些技术难点相关推荐

  1. 在线文档分享平台技术实现探讨

    最近在研究在线文档分享平台,不经意间又发现了几个网站(除百度文库外),好像大多数网站都是基于flash阅读的,网上也能下载到一些实现的代码! 在线文档分享平台: http://wenku.baidu. ...

  2. 在线文档技术概览-历史与发展篇

    这是一系列入门级别的在线文档知识文章,适合于刚入门在线文档开发,或者想要入门或者公司对这方面有规划的开发人员阅读,本文将从在线文档的历史,目前的发展形势,基本的架构设计,以后的发展趋势,这五点进行展开 ...

  3. 浅谈在线文档的那些事儿

    大厂技术  坚持周更  精选好文 前言 对前端来说开发一个在线文档需要啥技术呢?想一下,开发一个在线文档我们可能要解决的问题: 最基础的文本编辑功能(哦?好像textarea就可以完成,那如果是富文本 ...

  4. 开发在线文档时,这个技术难点你解决了吗?

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. "时势造英雄",是亘古不变的真理.在当前的时代背景下,在线文档可以称得上是这样的&quo ...

  5. 十三种技术文档模板_在线文档,知多少?

    不知大家有没有在线编辑文档的习惯 在线编辑文档有许多好处 比如:多平台同步.协作编辑等 今天给大家推荐三款在线文档软件 -- 金山文档.腾讯文档.石墨文档 限于篇幅,这里仅介绍它们对应的 Window ...

  6. 在线文档这道技术竞赛题:WPS文档或许有些正确答案

    今天的年轻人,前所未有地信奉着这样一个理念:办公软件就是生产力,苦什么也不能苦办公. 原因也很简单,"社畜们"正在前所未有地被黏在办公软件上. 根据金山WPS的官方数据,WPS文档 ...

  7. 在线文档技术揭秘开篇 - 富文本编辑器

    前言 本文旨在向大家介绍在线文档的核心模块富文本编辑器技术,并介绍业内主流商业文档产品如何进行富文本编辑器技术选型. 富文本编辑器 富文本编辑器,Rich Text Editor, 简称 RTE, 是 ...

  8. 在线文档技术-编辑器篇

    这是在线文档技术的第二篇文章,本文将对目前市面上所有的主流编辑器和在线文档进行一次深入的剖析和研究,从而使大家对在线文档技术有更深入的了解,也让更多人能够参与其开发与设计中来. 注意:出于对主流文档产 ...

  9. 协同办公风口来袭,在线文档顺势崛起!

    疫情过后复工在即,预计疫情带来的影响还将持续一段时间.面对此类重大突发事件,企业该如何通过数字化转型,借助信息化系统转危为机? 前文提要 通过此前在<远程办公,即将开启企业办公的全新时代!> ...

最新文章

  1. OpenStack高可用核心架构分析
  2. luoguP1419 寻找段落(二分答案+单调队列)
  3. delimiters 插值 选项
  4. centos光盘修复引导_CentOS系统启动/boot/initramfs修复(实验)
  5. python print 输出到txt_Python的print()输出形式
  6. 太阳能板如何串联_光伏板清洁专用的清洁毛刷
  7. 阿里云发布链路追踪服务Tracing Analysis
  8. 为何师兄研二就能发表COLING国际会议长文?
  9. 推荐下载使用:COMODO Internet Security V5.0.157302.1066 多国语言版(含:简体中文)
  10. killall: command not found
  11. java连接带通讯密码的中控考勤机 iface702
  12. 华北电力保定校区学计算机好吗,华北电力大学保定校区计算机专业
  13. Shell 小脚本集合
  14. 台式计算机硬件办公配置清单,颜值满分的办公台式电脑,分享配置清单
  15. 洲际酒店集团发布全新奢华精选品牌;凯悦27亿美元收购奢华酒店运营集团ALG | 美通社头条...
  16. unity小游戏的脚本
  17. 生兔子问题(递归算法)
  18. mysql配置jdbc
  19. IAR for ARM系列教程(三)_菜单(Ⅰ)
  20. 创维e900什么芯片_创维E900V21C晶晨芯片卡刷包 V1.0 免费版

热门文章

  1. “飞天、无影、小蛮驴…”带你走进2020云栖大会
  2. 东芝正式退出笔记本电脑业务!
  3. 一个月 200 题,命中 80%,拿下 BAT,我独特的高效刷题法
  4. 祝贺 Java 走过创新的 25 年
  5. 高通发布 5G 基带芯片 X60:5nm 制程,2021 年上市
  6. 为什么云开发最终将成为编程新标准?
  7. 我的第一个全栈 Web 应用程序
  8. 罗永浩将举办「老人与海」发布会;微软疑似遭遇大范围全球宕机;Python 3.9 首个测试版发布 | 极客头条...
  9. 微软警告 Windows 10 1703 即将停止支持!
  10. 微软 CTO 韦青:5G 与亚里士多德