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

最佳答案

我的猜测(仅是猜测)是google使用了PUSH服务。考虑到他们的聊天客户端(也集成在窗口中),这似乎是最可行的选项,它也使用此功能以最小的延迟传递“实时”消息。

我敢打赌他们有一个完整的设置,可以管理与连接有关的所有事情,并发送标志来触发特定的元素。您不会看到连接触发,因为最初的页面访问会建立连接,然后会在您打开页面的整个过程中挂起。例如

  • 您访问页面
  • 浏览器建立了与[example] api.docs.google.com [/example]的连接,并保持打开状态
  • 然后,客户端代码发送各种命令并接收各种响应。
  • 这些命令来回发送,直到您可以:
  • 断开连接(超时等),在这种情况下将重新建立
  • 浏览器窗口已关闭

  • 我所看到的典型通信示例:
    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协议(protocol)如何工作。

    同样,这只是一个猜测

    --

    为了证明这一点,请使用诸如ethereal之类的工具,然后查看是否可以在后台看到正在传输的信息。

    关于ajax - Google文档如何自动保存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6126128/

    10-12 00:11
    查看更多