Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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_Ajax_Cross Browser_Xmlhttprequest_Comet - Fatal编程技术网

Javascript 持久上游Comet样式连接

Javascript 持久上游Comet样式连接,javascript,ajax,cross-browser,xmlhttprequest,comet,Javascript,Ajax,Cross Browser,Xmlhttprequest,Comet,有许多方法具有持久的下游连接。例如,可以使用隐藏的iframe;或者是一个复杂的XHR模型,它利用onreadystate在维护连接的同时通过应用程序推送部分信息。然而,我一直无法找到一种方法,以同样的精神做到坚持不懈 如果您在上游推送中使用连接:保持活动状态,那么您实际上不会每次都中断连接并重建;那很好。您甚至可以在GET查询中对上游推送进行编码,该查询将返回一个空文档 然而,即使距离很近,您仍然没有通过持久的、长轮询的下游连接获得的性能、低延迟和吞吐量 除非,也就是说,有另一种方法可以做到这

有许多方法具有持久的下游连接。例如,可以使用隐藏的iframe;或者是一个复杂的XHR模型,它利用
onreadystate
在维护连接的同时通过应用程序推送部分信息。然而,我一直无法找到一种方法,以同样的精神做到坚持不懈

如果您在上游推送中使用
连接:保持活动状态
,那么您实际上不会每次都中断连接并重建;那很好。您甚至可以在
GET
查询中对上游推送进行编码,该查询将返回一个空文档

然而,即使距离很近,您仍然没有通过持久的、长轮询的下游连接获得的性能、低延迟和吞吐量

除非,也就是说,有另一种方法可以做到这一点

这里有一些关于这类解决方案的理论

  • 可能是将
    混合/多部分
    流发布到具有边界条件的服务器的能力
  • 也许是一种执行分块传输的能力,每个后续的分块都是新数据
值得注意的是,尽管HTML5或Flash可能实现这一点,但如果不使用浏览器生态系统中的插件就可以实现这一点,这将是非常有用的。我的期望之一是能够在客户机和服务器之间流畅地实现Knuth的协同路由

有人对此有什么见解吗?谢谢

~chris.

在web浏览器中实现“真正”双向通信的唯一方法是使用WebSocket。这是他们的主要优势——您可以在没有HTTP开销的情况下进行上游和下游通信

如果您的下游连接是通过长轮询交付的,那么您的上游连接将是常规的旧HTTP请求

但是,除非你有很多请求,否则我会考虑你是否试图优化一些并不真正需要优化的东西。即使是目前最小的可用服务器,每秒也能处理数千个HTTP请求。而且,由于大多数实时客户端应用程序监听的比发送的多,因此快速写入下游连接将真正影响服务器性能。在上游方面,只要您使用“连接:保持活动”来避免套接字设置/拆卸的开销,大多数应用程序都会看到迁移到WebSocket的性能优势可以忽略不计

(我在建筑公司工作。)