gmail如何实时检查gtalk状态?

时间:2010-11-25 02:59:18

标签: gmail chat google-talk

如果我在世界各地有数以千计的联系人(我们假设)并且其中一个联系人将其状态更改为远离或成为偶像,它将立即在我的浏览器中更改,那该怎么办?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

我不确定gmail使用的确切机制,但是相当愚蠢的方法是每隔X秒对服务器进行页面轮询(通过XMLHTTPRequest,即AJAX调用),以便更改联系人状态,因为N秒前...然后应用这些更改。

答案 2 :(得分:2)

Google聊天系统基于XMPP协议,Gmail聊天块就像另一个XMPP客户端(类似于gtalk,pidgin,桌面用psi)。 XMPP使用Bosh扩展名在浏览器上运行。虽然我确定谷歌一定是黑​​客攻击让它以自己的方式运作,但潜在的想法仍然是相同的。

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