16

HTTP 标头不会导致连接长时间保持打开状态吗?那么有什么优势呢?

谁能为我澄清一下?我想,我似乎错过了这个概念。

4

1 回答 1

16

在 TCP/IP 级别,它看起来是一样的:一个套接字是打开的。

但从浏览器的角度来看,它们是完全不同的。keep-alive 是让浏览器重新使用以请求更多内容(例如图像、css 文件、站点上的下一页)。WebSockets 用于在您的 Javascript 应用程序代码中进行双向通信。服务器可以随时选择发送内容。您的 JS 应用程序可以随时向服务器发送数据。

还值得与 SSE(又名 EventSource)进行比较,后者也允许服务器选择随时发送内容,但它是单向的(您的 JS 应用程序在需要发送更多数据时必须求助于 XHR)。(WebSockets 和 SSE 的完整比较可能会变得非常复杂,所以我在这里不再多说,只是说 SSE 通常是正确的选择。)

还可以与 HTTP/2(又名 SPDY)中的服务器推送进行比较。这是为了让服务器主动推送文件(图像、css 文件、站点上的下一页),但它再次处于浏览器级别,不受 Javascript 控制。

于 2013-07-12T06:22:40.533 回答