首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XHR持久连接,怎么做到的?

问XHR持久连接,怎么做到的?
EN

Stack Overflow用户
提问于 2009-12-03 12:33:50
回答 1查看 3.4K关注 0票数 1

我刚刚读到了FaceBook是如何设计他们的聊天系统的,上面写道:“让iframe的JavaScript通过一个持久连接发出HTTP GET请求,这个请求直到服务器有客户端的数据时才会返回。如果请求被中断或超时,它将被重新建立。这绝不是一种新技术:它是Comet的一个变体,特别是XHR长轮询和/或BOSH。”

有人能解释一下如何向web服务器发送持久请求吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-03 22:32:48

实际上,您只需将请求保留在服务器上,直到1)有可用的数据,或者2)服务器达到阈值并说“忘了它,重新建立,这样我就知道您真的还在那里”。这种方法的困难在于服务器端的可伸缩性,因为通常web服务器被设计为尽可能快地执行,并且很难为传入的“长期持有”的请求产生大量线程/进程。

如果在同一个域上,这个长期持有的请求通常是Xhr,如果是跨域,则通常是JSONP。

我们已经为我们的IIS/ASP.NETComet服务器(WebSync)编写了一个完整的comet客户端,您可以查看它,或许可以有所了解。浏览client.js file的源代码(点击?debug=true查看未压缩版本),您将看到一些对“连接”请求的引用-这些是对服务器的长轮询请求,假设没有数据到达,则每个请求等待大约25秒。

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

https://stackoverflow.com/questions/1837660

复制
相关文章

相似问题

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