Javascript Comet背景架构
我有一些关于Comet的信息,但我想知道它是如何保持连接(从客户端到服务器)打开的。Javascript Comet背景架构,javascript,asp.net,web,push,comet,Javascript,Asp.net,Web,Push,Comet,我有一些关于Comet的信息,但我想知道它是如何保持连接(从客户端到服务器)打开的。 它是如何做到这一点的呢?Comet或长轮询ajax从长远来看不会保持连接打开 HTTP是无状态的,它发送请求并获取响应。就这样 那么,连接看起来是如何保持打开状态的呢?因为它滥用了HTTP请求 当您发送请求时,客户端将等待响应,直到响应到来,或者直到服务器确定此连接已达到超时 在Comet中,服务器故意不立即响应。它只在他想要发送响应时才应答。这就是客户端发送HTTP请求并等待响应或超时的原因 这样,当它只是滥
它是如何做到这一点的呢?Comet或长轮询ajax从长远来看不会保持连接打开 HTTP是无状态的,它发送请求并获取响应。就这样 那么,连接看起来是如何保持打开状态的呢?因为它滥用了HTTP请求 当您发送请求时,客户端将等待响应,直到响应到来,或者直到服务器确定此连接已达到超时 在Comet中,服务器故意不立即响应。它只在他想要发送响应时才应答。这就是客户端发送HTTP请求并等待响应或超时的原因 这样,当它只是滥用HTTP请求的超时属性时,它看起来像是从服务器到客户端的某种推送 例如,这是一些comet代码(为了保持简短,使用jQuery):
实际上,它会保持连接打开,直到服务器上有可用数据或超时。然后一个新的连接被打开。编辑了答案,我把它和长轮询ajax混淆了,谢谢你给我学习!
setTimeout( function comet () {
$.get( '/some/url', {}, function ( data ) {
// Process the request's response
// And recall setTimeout
setTimeout( comet, 1 )
} )
}, 1 )