与Facebook和Gmail相比,我的独立长轮询实现方式的比较

6

这些天我一直在为我的网站尝试实现长轮询/Comet。我大致了解了它的工作原理,这是我进行一些测试的地方

另一方面,我一直在观察(使用Firebug)gmail和facebook如何实现长轮询。我发现gmail的ajax请求并不会紧跟着当前请求过期而持续进行,而是会在几秒钟/几分钟后再次发送下一个请求。

我进一步进行了实验。我在Firefox中使用gmail帐户A登录,同时在Chrome中使用gmail帐户B进行登录。我等待当前ajax轮询结束后,从帐户B向帐户A发送了一封电子邮件。我本来以为帐户A直到下一次轮询才会收到它,但令我惊讶的是帐户A在我点击提交按钮后就立即接收到了它。

gmail如何使用长轮询实现这个功能的?

如果您尝试访问我的网站并单击“运行”按钮,然后打开Firebug,您会看到ajax旋转图标始终在运行。当服务器响应数据时,它会再次请求服务器。

2个回答

1

看看Frozenmountain的WebSync或SignalIR,它们可以帮你省去后端工作。我可以保证WebSync的可靠性,因为我每天都在使用它,但是我也听说SignalIR不错。


我已经下载了免费版本。但是我可能需要先学习更多的基础知识,谢谢 :) - n3rfd

1

我认为你的假设,即 Gmail 仅使用长轮询是不正确的。根据这个问题(以及答案),它使用 forever frame 和 forever XHR。另请参阅BrowserChannel,他们用于 Gmail 聊天。


你可能也会对 socket.io 的代码 感兴趣。 - HyderA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接