Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Comet背景架构_Javascript_Asp.net_Web_Push_Comet - Fatal编程技术网

Javascript Comet背景架构

Javascript Comet背景架构,javascript,asp.net,web,push,comet,Javascript,Asp.net,Web,Push,Comet,我有一些关于Comet的信息,但我想知道它是如何保持连接(从客户端到服务器)打开的。 它是如何做到这一点的呢?Comet或长轮询ajax从长远来看不会保持连接打开 HTTP是无状态的,它发送请求并获取响应。就这样 那么,连接看起来是如何保持打开状态的呢?因为它滥用了HTTP请求 当您发送请求时,客户端将等待响应,直到响应到来,或者直到服务器确定此连接已达到超时 在Comet中,服务器故意不立即响应。它只在他想要发送响应时才应答。这就是客户端发送HTTP请求并等待响应或超时的原因 这样,当它只是滥

我有一些关于Comet的信息,但我想知道它是如何保持连接(从客户端到服务器)打开的。
它是如何做到这一点的呢?

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 )