自己技术和时间有限,稍微看了下石墨文档的更新网络请求。
只检查了下 web 的网络。是在打开文档所在页面的时候创建了 websocket ,每个记录下来的动作都被实时发送到服务器,如果此时有另外的人在查看或者编辑此文档,这个动作会被下发到该客户端并更新文档。
每个动作包含了该次修改的一个 uuid ,修改时间,文档内修改的地址(行数,列数?), 修改的内容。
其中最让我好奇,也不懂的地方是标记修改的地方的表示方法。
比如在第一行连续缓慢输入 012 ,这个 websocket 连接会有三个 frame 发到服务器,其中标示修改位置和内容的为:
Z:1>101+1$0
Z:2>1=101+1$1
Z:4>1=201+1$2
非常有趣的标记,似乎最后是修改的内容,前面是修改的位置,不过这个仅仅只是简单的测试,还有很多其他复杂操作的标记更复杂,这个标记方式,到底是怎么解析的~ :)
石墨文档的程序员们自己创造的还是有什么标准的方式吗? 我好奇心实在重。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.