Ras*_*mus 14 javascript jquery long-polling
嗨我明白,在长轮询中你保持与服务器的连接打开很长时间,直到你从服务器得到一个响应,然后再次轮询并等待下一个响应.但是,我似乎不明白如何编码它.下面有这个代码使用长轮询,但我似乎没有得到它
(function poll(){
$.ajax({ url: "server", success: function(data){
//update page based on data
}, dataType: "json", complete: poll, timeout: 30000 });
})();
Run Code Online (Sandbox Code Playgroud)
但是这里的连接如何保持开放.我知道一旦获得服务器的响应,就会再次触发"poll"功能.但是如何保持连接打开?
编辑1: - 如果有人也可以解释这里实际超时的情况,那将会很棒
dec*_*eze 13
客户端无法强制服务器保持连接打开.该服务器根本就没有关闭连接.服务器必须在某个时候说"就是这样,这里没有更多的内容,再见".在长轮询中,服务器根本不会这样做,并让客户端等待更多数据,随着更新的进行,它会逐渐涓涓细流.这是长时间的轮询.
在客户端,可以在请求尚未完成时偶尔检查已经收到的数据.这样,有时可以通过相同的开放连接从服务器发送数据.在您的情况下,这没有完成,success回调只会在请求完成时触发.它基本上是一种廉价的长轮询形式,服务器使客户端等待事件,发送有关此事件的数据,然后关闭连接.客户端将其作为触发器,处理数据,然后重新连接到服务器以等待下一个事件.
我认为令人困惑的是,讨论主要集中在客户端编程上.
长轮询不是严格的客户端模式,但需要Web服务器保持连接打开.
背景:当某些事情发生或可用时,客户希望通过Web服务器得到通知,例如,让我知道新电子邮件何时到达,而我不必每隔几秒就回来询问一次.
| 归档时间: |
|
| 查看次数: |
23429 次 |
| 最近记录: |