HTTP Keep-Alive是否解决了长轮询所解决的问题?

9

长轮询和HTTP Keep-Alive有什么区别呢?

HTTP Keep-Alive不就解决了长轮询所解决的问题吗?

1个回答

13

不,它们几乎完全没有关联。

HTTP keepalive 允许客户端保持连接处于打开状态,但是空闲,以便使其未来的请求更加高效。服务器无法通过 keepalive 连接向客户端发送数据,因为没有请求处于活动状态。

长轮询是一种机制,其中服务器保持请求(因此也保持连接)处于活动状态,但不发送数据,以允许服务器在可用时向客户端发送数据,例如当事件发生时。


3
由于HTTP keepalive保持连接处于打开状态,服务器是否收到请求都可以独立地推送数据。 - vivek2k6
4
不行 - HTTP 不是那样工作的。没有请求,响应就没有意义。 - user149341
@duskwuff 当使用长轮询的时候,设置保持活动(Keep-alive)头部有什么意义吗?例如,如果服务器每5秒向客户端发送一些数据,那么我需要设置保持活动头部吗?或者说这是不必要的? - JuliusvM
@JuliusvM 不行。这可能会有害。Keep-Alive 控制请求结束时的行为,但是长轮询请求将需要很长时间才能结束。 - user149341

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接