最近给 notelive.cc 做了协同编辑的支持,目前还在测试中,大家也可以试试反馈下 bug 哈。。
问题 1:协同模式可以做到延迟同步吗?
我想要做到延迟同步,就是说客户端 A 在 1 行 1 列输入“ 123 ”后,在完成了三个字的输入,或者延迟几秒后再去同步到其他客户端,但是这样的话好像没有办法处理数据的变化,暂时还没想好这种情况。
为什么要做延迟呢,是因为小服务器性能有限,而且个人没精力去上一些中间件,比如 mq、redis 等等。 所以想要尽可能在非常有限的服务器性能和没有很好的中间件做保障的情况下去做这个协同编辑。
现在靠着一些粗暴的算法暂时实现了一些协同编辑的场景。大家可以测试试试哈
问题 2:有什么 js 的文本差异比较模块?
但是因为还存在稳定性问题和 bug,所以打算做一个容错处理,就是客户端会定时的推送本地的全量数据,其他客户端获取到之后,同步到本地。
但是因为现在的逻辑下,是不能直接用全量数据覆盖本地数据的,这样会导致丢失到本地的历史操作记录,也就是导致无法撤销了。 所以打算比较出文本的差异部分,把差异的内容插入到本地。不知道有没有合适的模块可以使用,如果没有只好自己造一个了。
或者有什么其他修复同步错误的方案吗??
问题 3:有什么开源的协同编辑的实现方案?
一直在用石墨文档,他的协同我体验挺好的,不知道有没有什么开源的方案可以参考学习下。
话说我能去石墨公司面试吗。。。最近想换工作了,在考虑找个什么的,本人 java 开发 3 年。
1
YuJianrong 2019-06-07 09:29:10 +08:00
有啊,https://www.npmjs.com/package/fast-array-diff
用于浏览器需要 browserify 转一下 |