js 有什么文本比较模块吗???以及协同编辑中怎么去做到延迟同步和错误修复?

2019-06-06 22:11:34 +08:00
 rizon

最近给 notelive.cc 做了协同编辑的支持,目前还在测试中,大家也可以试试反馈下 bug 哈。。

问题 1:协同模式可以做到延迟同步吗?

我想要做到延迟同步,就是说客户端 A 在 1 行 1 列输入“ 123 ”后,在完成了三个字的输入,或者延迟几秒后再去同步到其他客户端,但是这样的话好像没有办法处理数据的变化,暂时还没想好这种情况。

为什么要做延迟呢,是因为小服务器性能有限,而且个人没精力去上一些中间件,比如 mq、redis 等等。 所以想要尽可能在非常有限的服务器性能和没有很好的中间件做保障的情况下去做这个协同编辑。

现在靠着一些粗暴的算法暂时实现了一些协同编辑的场景。大家可以测试试试哈

问题 2:有什么 js 的文本差异比较模块?

但是因为还存在稳定性问题和 bug,所以打算做一个容错处理,就是客户端会定时的推送本地的全量数据,其他客户端获取到之后,同步到本地。
但是因为现在的逻辑下,是不能直接用全量数据覆盖本地数据的,这样会导致丢失到本地的历史操作记录,也就是导致无法撤销了。 所以打算比较出文本的差异部分,把差异的内容插入到本地。不知道有没有合适的模块可以使用,如果没有只好自己造一个了。

或者有什么其他修复同步错误的方案吗??

问题 3:有什么开源的协同编辑的实现方案?

一直在用石墨文档,他的协同我体验挺好的,不知道有没有什么开源的方案可以参考学习下。

话说我能去石墨公司面试吗。。。最近想换工作了,在考虑找个什么的,本人 java 开发 3 年。

1269 次点击
所在节点    程序员
1 条回复
YuJianrong
2019-06-07 09:29:10 +08:00
有啊,https://www.npmjs.com/package/fast-array-diff
用于浏览器需要 browserify 转一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/571666

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX