首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Facebook聊天如何避免服务器的持续轮询?

Facebook聊天如何避免服务器的持续轮询?
EN

Stack Overflow用户
提问于 2010-04-19 04:47:40
回答 1查看 8.3K关注 0票数 17

我正在尝试理解Facebook的聊天功能是如何在不不断轮询服务器的情况下接收消息的。

Firebug向我展示了一个GET XmlHttpRequest,它一直坐在那里,等待服务器的响应。5分钟后,此操作永远不会超时。

他们如何防止超时?

AJAX请求可以像那样无限期地坐在那里,等待响应吗?

我能用JSONRequest做到这一点吗?我在json.org上看到了这一点:

JSONRequest旨在支持双工连接。这允许服务器可以异步启动传输的应用程序。这是通过同时使用两个请求来完成的:一个发送请求,另一个接收请求。通过使用timeout参数,POST请求可以保持挂起状态,直到服务器确定它有及时的数据要发送。

或者,除了使用JSONRequest之外,还有其他方法可以让AJAX调用在那里等待吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-19 04:51:36

Facebook使用一种现在称为Comet的技术将消息从服务器推送到客户端,而不是让客户端轮询服务器。

有许多方法可以实现这一点,XMLHttpRequest long polling只是一种选择。此方法背后的原理是,客户端发送一个普通的XMLHttpRequest,但服务器直到发生某些事件(例如另一个用户发送消息)时才响应,因此客户端被迫等待。当客户端收到响应(或请求超时)时,客户端只需创建一个新请求,以便始终有一个到服务器的打开请求。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2663882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档