gpt4 book ai didi

ajax - Facebook 聊天如何避免连续轮询服务器?

转载 作者:行者123 更新时间:2023-12-03 13:57:57 26 4
gpt4 key购买 nike

想要改进这篇文章?通过 editing the post 添加来自知名来源的引用.带有非来源内容的帖子可能会被编辑或删除。














就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




10年前关闭。




我试图了解 Facebook 的聊天功能是如何在不连续轮询服务器的情况下接收消息的。

Firebug 向我展示了一个 GET XmlHttpRequest 不断坐在那里,等待来自服务器的响应。 5分钟后,这从未超时。

他们如何防止超时?

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

我可以用 JSONRequest 做到这一点吗?我在 json.org 看到这个:

JSONRequest is designed to support duplex connections. This permits applications in which the server can asynchronously initiate transmissions. This is done by using two simultaneous requests: one to send and the other to receive. By using the timeout parameter, a POST request can be left pending until the server determines that it has timely data to send.



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

最佳答案

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

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

关于ajax - Facebook 聊天如何避免连续轮询服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2663882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com