我刚刚读到了FaceBook是如何设计他们的聊天系统的,上面写道:“让iframe的JavaScript通过一个持久连接发出HTTP GET请求,这个请求直到服务器有客户端的数据时才会返回。如果请求被中断或超时,它将被重新建立。这绝不是一种新技术:它是Comet的一个变体,特别是XHR长轮询和/或BOSH。”
有人能解释一下如何向web服务器发送持久请求吗?
发布于 2009-12-03 22:32:48
实际上,您只需将请求保留在服务器上,直到1)有可用的数据,或者2)服务器达到阈值并说“忘了它,重新建立,这样我就知道您真的还在那里”。这种方法的困难在于服务器端的可伸缩性,因为通常web服务器被设计为尽可能快地执行,并且很难为传入的“长期持有”的请求产生大量线程/进程。
如果在同一个域上,这个长期持有的请求通常是Xhr,如果是跨域,则通常是JSONP。
我们已经为我们的IIS/ASP.NETComet服务器(WebSync)编写了一个完整的comet客户端,您可以查看它,或许可以有所了解。浏览client.js file的源代码(点击?debug=true查看未压缩版本),您将看到一些对“连接”请求的引用-这些是对服务器的长轮询请求,假设没有数据到达,则每个请求等待大约25秒。
https://stackoverflow.com/questions/1837660
复制相似问题