Google文档如何自动保存?

时间:2011-05-25 14:34:24

标签: ajax google-docs

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

1 个答案:

答案 0 :(得分:8)

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

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

  1. 您访问该页面
    • 浏览器建立了与[示例] api.docs.google.com [/示例]的连接并保持打开状态
  2. 客户端代码然后发送各种命令并接收各种响应。
  3. 这些命令来回发送,直到您:
    • 丢失连接(超时等),在这种情况下重新建立
    • 浏览器窗口已关闭
  4. 示例,我如何看待,典型的沟通:

    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协议的工作原理。

    再次,这只是猜测

    -

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