javascript - cometd 背景架构

标签 javascript asp.net web push comet

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

最佳答案

从长远来看,Comet 或长轮询 ajax 不会保持连接打开。

HTTP 是无状态的,它发送请求并获得响应。就是这样。

那么,连接看起来如何保持打开状态?因为它滥用 HTTP 请求。

当您发送请求时,客户端会等待响应直到响应到来,或者直到服务器确定此连接已超时。

在 Comet 中,服务器故意不立即响应。只有当他想发送回复时,它才会回答。这就是客户端发送 HTTP 请求并等待响应或超时的原因。

这样,它看起来像是某种从服务器到客户端的推送,但它只是滥用 HTTP 请求的超时属性。

例如,这是一些 comet 代码(为了保持简短而使用 jQuery):

setTimeout( function comet () {
    $.get( '/some/url', {}, function ( data ) {
        // Process the request's response

        // And recall setTimeout
        setTimeout( comet, 1 )
    } )
}, 1 )

关于javascript - cometd 背景架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10276467/

相关文章:

javascript - HTML 部分 100% 视口(viewport)高度

javascript - 如何使用将 Observable 映射到值是可观察对象的对象的函数来映射 Observable?

asp.net - 找不到 AmazonS3 的类型或命名空间

asp.net - Jquery隐藏字段

asp.net - 使用 StructureMap3 在 MVC 应用程序中注入(inject)当前用户的依赖项

java - 如何关闭jetty调试?

JQUERY UI 自动完成功能在本地不起作用

javascript - 在指定字符后分割 1 个字符

javascript - Highstock/Highchart 无法设置单个点颜色

javascript - 按钮和容器元素之间的 2px 差异