这些天我一直在为我的网站尝试实现长轮询/Comet。我大致了解了它的工作原理,这是我进行一些测试的地方。
另一方面,我一直在观察(使用Firebug)gmail和facebook如何实现长轮询。我发现gmail的ajax请求并不会紧跟着当前请求过期而持续进行,而是会在几秒钟/几分钟后再次发送下一个请求。
我进一步进行了实验。我在Firefox中使用gmail帐户A登录,同时在Chrome中使用gmail帐户B进行登录。我等待当前ajax轮询结束后,从帐户B向帐户A发送了一封电子邮件。我本来以为帐户A直到下一次轮询才会收到它,但令我惊讶的是帐户A在我点击提交按钮后就立即接收到了它。
gmail如何使用长轮询实现这个功能的?
如果您尝试访问我的网站并单击“运行”按钮,然后打开Firebug,您会看到ajax旋转图标始终在运行。当服务器响应数据时,它会再次请求服务器。