1

如果我在世界各地有成千上万的联系人(假设)并且其中一个将其状态更改为离开或成为偶像,它会立即在我的浏览器中更改,这是怎么回事?

4

3 回答 3

3

这不是即时的,有一点延迟,基本上当您在浏览器中加载 gmail 页面时,您还下载了一个通过 ajax 动态刷新内容的 javascript 文件。同样,如果您的联系人更改了 gtalk 状态,并且您在 gmail 中使用 gtalk 客户端,则该更改将在您查看的页面下一次请求服务器更新后反映。它只是不断地检查服务器是否有变化(面向事件的范例在网络上并不流行)。

于 2010-11-25T03:08:16.720 回答
2

我不确定 gmail 使用的确切机制,但一种相当愚蠢的方法是让页面轮询(通过 XMLHTTPRequest,又名 AJAX 调用)服务器每 X 秒以更改自 N 秒前以来的联系状态......然后应用这些更改。

于 2010-11-25T03:04:09.173 回答
2

Google 聊天系统基于XMPP协议,Gmail 聊天块就像另一个 XMPP 客户端(类似于桌面的 gtalk、pidgin、psi)。XMPP 使用Bosh扩展在浏览器上运行。虽然我确信谷歌必须以自己的方式进行黑客攻击,但基本的想法仍然是一样的。

简而言之,当您的一位联系人更新他/她的状态时,它会被推送到 google 聊天 xmpp 服务器,而后者又会将这些信息推送到您的 gmail 聊天客户端。

于 2010-11-27T10:56:14.087 回答