Google 文档自动保存如何工作?

2024-05-01

好吧,我知道这听起来很普通。但我指的是 AJAX 级别。我尝试过使用 Firebug 来跟踪 NET 连接和帖子,但这是一个谜。有谁知道他们如何在不破坏网络/浏览器的情况下不断进行即时自动保存?


我的猜测(这只是一个猜测)是谷歌使用推送服务。这似乎是最可行的选择,因为他们的聊天客户端(也集成在窗口内)也使用它来以最小的延迟传递“实时”消息。

我敢打赌他们有一个完整的设置来管理所有与连接相关的内容并发送标志来触发特定元素。您不会看到连接触发器,因为初始页面访问建立了连接,然后在页面打开的整个持续时间内挂起。例如

  1. You visit the page
    • 浏览器建立了与 [example]api.docs.google.com[/example] 的连接并保持打开状态
  2. 然后,客户端代码发送各种命令并接收各种响应。
  3. These commands are sent back and forth until you either:
    • 失去连接(超时等),在这种情况下会重新建立连接
    • 浏览器窗口已关闭

我认为典型的沟通示例:

SERVER:                              CLIENT:
-------                              -------
                                     DOC_FETCH mydocument.doc
DOC_CONTENT mydocument.doc 15616 ...      
                                     DOC_AUTOSAVE mydocument.doc 24335 ...
                                     IM collaboratorName Hi Joe!
IM_OK collaboratorName OK
AUTOSAVE_OK mydocument.doc OK

哪里的DOC_FETCH命令说我想要数据。服务器回复相应的信息DOC_CONTENT <docname> <length> <contents>。然后客户端触发DOC_AUTOSAVE <docname> <length> <content>。考虑到潜在的同时请求的数量,我敢打赌他们会在请求/响应中保留“上下文”,以便在发送某些内容后可以将其匹配。在这个例子中,它知道IM_OK匹配第二个请求(IM),以及AUTOSAVE_OK匹配第一个请求(AUTOSAVE)--类似于 AOL 的 IM 协议的工作原理。

Again, 这只是一个猜测.

--

为了证明这一点,请使用像 ethereal 这样的东西,看看是否可以看到后台传输的信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 文档自动保存如何工作? 的相关文章

随机推荐

  • 如何从反应上下文中获取数据

    我有一个名为的 React 类GlobalDataProvider import React Component from react const DataContext React createContext export default
  • OpenLayers 3 中的边界如何工作?

    是否有这样的概念OpenLayers Bounds http dev openlayers org docs files OpenLayers BaseTypes Bounds js htmlOpenLayers 2 x 中的内容仍然存在于
  • 如何确定 WPF 中的光标大小?

    在 Windows 窗体中 有一个 Cursor Size 属性 允许您获取光标对象的大小 宽度 高度 如何在 WPF 中确定此信息 SystemParameters 类公开光标宽度 http msdn microsoft com en u
  • 在 MATLAB 中高效地形成动态窗口

    有人可以帮助我提供一种有效的方法 或者帮助我执行提供的代码 以尽可能少的步骤获得相同的结果 我将感激你 我有一个原始数组 A 1 1 1 4 3 4 5 4 4 3 3 1 0 0 2 6 2 6 3 6 6 2 7 4 8 7 2 2 2
  • 如何将急切执行中的模型转换为静态图并保存在 .pb 文件中?

    想象一下我有模型 tf keras Model class ContextExtractor tf keras Model def init self super init self model self get model def cal
  • 按名称查找控件的父级

    当在 xaml 代码中设置名称时 有没有办法通过名称找到 WPF 控件的父级 尝试这个 element VisualTreeHelper GetParent element as UIElement 在哪里 元素是 Children 您需要
  • 如何在Java程序中调用DLL中的方法

    我正在尝试使用 JNA 调用 DLL 中的方法 到目前为止已经使用加载了DLL Runtime getRuntime load myworkspace test dll 该 dll 包含我需要访问的方法 如何在我的 Java 文件中执行 D
  • MVC T4 MvcTextTemplateHost 和定制的“控制器”T4 模板

    我正在创建自己的自定义 T4 模板 该模板与我的 MVC Web 应用程序中包含的 ADO NET 实体框架模型 edmx 文件 集成 以供参考 请简单浏览一下以下两个网址 斯科特 汉塞尔曼 T4 代码生成 Visual Studio 最保
  • 为什么我的代码中总是大写?

  • 如何以编程方式锁定 Windows 工作站? [复制]

    这个问题在这里已经有答案了 可能的重复 使用 C 以编程方式锁定 Windows 工作站 https stackoverflow com questions 1263047 lock windows workstation programm
  • 将 Magick::Image 转换为 cv::Mat

    我正在尝试将通过 Magick 从 GIF 加载的图像转换为cv Mat 我已经从cv Mat to Magick Image但似乎无法找到如何从 Magick 中的图像中提取数据以便将其加载到 Mat 中 最好的方法是什么 供参考 反过来
  • 确定 WPF 元素相对于某个父元素的边界矩形

    我认为这是一个非常简单的请求 但我似乎无法在搜索中找到确凿的答案 如何确定窗口中特定视觉元素相对于其他父元素的边界 我尝试过使用LayoutInformation GetLayoutSlot但这似乎只是返回一个Rect在 0 0 处并且不反
  • 如何在python日志模块中获取当前日志级别

    我正在尝试创建一个基本记录器 无需外部包即可着色 these have to be the first functions so I can use it in the logger settings def create log name
  • 为什么 Jupyter 突然将数据框显示为基于文本的?

    我已经使用 jupyter 笔记本有一段时间了 如果我这样做的话df head 它总是返回一个格式良好的表格格式 现在我调用了数据 我得到了这个 为什么 我该如何解决它 import pandas as pd df pd read csv
  • 如何循环用户输入直到输入整数?

    我想运行一个交互式程序 提示用户输入学生人数 如果用户输入除整数之外的字母或其他字符 则应再次询问他们 输入学生人数 我有以下代码 public int createArrays Scanner s int size System out
  • Neo4j 的 Cypher 查询语言是开源的吗?

    Neo4j的语言Cypher的现状如何 我真的很喜欢它 但我想避免 Neo4j 锁定 是否还有像 Gremlin 中那样的其他 Cypher 界面 Regards Cypher 完全是 OSS 请参阅https github com neo
  • 如何使用 Perl 从纯文本中提取 URL?

    我需要 Perl 正则表达式来解析纯文本输入并将所有链接转换为有效的 HTML HREF 链接 我已经尝试了在网上找到的 10 个不同版本 但没有一个可以正常工作 我还测试了 StackOverflow 上发布的其他解决方案 但似乎都不起作
  • 带有 dplyr::do 的匿名函数 - 使用 rle 的结果来过滤数据

    我有按主题 id 分组的时间序列数据 这些数据保留在某个 站点 上 并且在每个 时间 步骤中都有某个 阶段 有时受试者从一个站点切换到另一个站点 并且可能会再次返回 如果个人更换站点来回 例如 从站点 a 到站点 b 然后返回站点 a an
  • 比较两个序列是否相等

    在因其标题而将其标记为重复之前 请考虑以下简短程序 static void Main var expected new List
  • Google 文档自动保存如何工作?

    好吧 我知道这听起来很普通 但我指的是 AJAX 级别 我尝试过使用 Firebug 来跟踪 NET 连接和帖子 但这是一个谜 有谁知道他们如何在不破坏网络 浏览器的情况下不断进行即时自动保存 我的猜测 这只是一个猜测 是谷歌使用推送服务