具有持久下游连接的方法有很多。例如,您可以使用隐藏的iframe;或者使用onreadystate在维护连接的同时通过应用程序推送部分信息的复杂XHR模型。然而,我一直无法找到一种办法,以同样的精神,坚持不懈地做上游。
如果您在上游推送中使用Connection: Keep-Alive,那么您不会每次都拆掉连接并重新构建,这很好。您甚至可以在返回空文档的GET查询中对上游推送进行编码。
然而,即使它很接近,您仍然无法获得持久的、经过长时间轮询的下游连接所能获得的性能、低延迟和吞吐量。
除非,也就是说,有另一种方法可以做到这一点。
这是一些关于这种解决方案会是什么样子的理论;
mixed/multipart流发布到具有边界条件的服务器的能力。值得注意的是,虽然在HTML5或Flash中这可能是可能的,但是如果一个人能够在今天非常突出的浏览器生态系统上实现它,而没有插件的话,这将是非常有用的。我的愿望之一是能够在客户端和服务器之间灵活地实现Knuth的协作。
有人对此有洞察力吗?谢谢。
~克里斯。
发布于 2013-02-12 18:00:48
在网络浏览器中进行“真正”双向通信的唯一方法是使用WebSockets。这是它们的主要优势--您可以在不需要HTTP开销的情况下进行上游和下游通信。
如果您的下游连接是通过长轮询传递的,那么您的上游连接将是常规的旧HTTP请求。
但是,除非您有很多请求,否则我会考虑您是否试图优化一些不需要优化的东西。即使是现在最小的可用服务器,每秒也能处理数千个HTTP请求。而且,由于大多数实时客户端应用程序侦听多于发送,所以对下游连接的快速写入将真正影响服务器性能。在上游端,只要您使用"Connection: Keep“来避免套接字设置/拆卸的开销,大多数应用程序通过迁移到WebSockets就会看到一个微不足道的性能优势。
(我为建立WebSync的公司工作。)
https://stackoverflow.com/questions/4974470
复制相似问题