好吧,我知道这听起来很普通。但我指的是 AJAX 级别。我尝试过使用 Firebug 来跟踪 NET 连接和帖子,但这是一个谜。有谁知道他们如何在不破坏网络/浏览器的情况下不断进行即时自动保存?
我的猜测(这只是一个猜测)是谷歌使用推送服务。这似乎是最可行的选择,因为他们的聊天客户端(也集成在窗口内)也使用它来以最小的延迟传递“实时”消息。
我敢打赌他们有一个完整的设置来管理所有与连接相关的内容并发送标志来触发特定元素。您不会看到连接触发器,因为初始页面访问建立了连接,然后在页面打开的整个持续时间内挂起。例如
- You visit the page
- 浏览器建立了与 [example]api.docs.google.com[/example] 的连接并保持打开状态
- 然后,客户端代码发送各种命令并接收各种响应。
- 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(使用前将#替换为@)