websocket - websocket 与 header connection-keep-alive=million 的 http 有何不同

标签 websocket

该 HTTP header 是否也会导致连接长时间保持打开状态?那么有什么好处呢?

谁能帮我解释一下吗?我想我似乎错过了这个概念。

最佳答案

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

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

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

还可以与 HTTP/2(又名 SPDY)中的服务器推送进行比较。这是为了让服务器主动推送文件(图片、css文件、网站下一页),但又是在浏览器层面,不受Javascript控制。

关于websocket - websocket 与 header connection-keep-alive=million 的 http 有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17608551/

相关文章:

javascript - 为什么我在 Node 的 HTTP 服务器上收到这么多连接事件?

node.js - IBM bluemix 上 NodeRED 中的 WebSocket header

javascript - if 语句阻止套接字向客户端发送消息

node.js - 基准 socket.io

php - 使用 PHP 在 Apache 服务器中部署 WebSockets

r - 使用 Apache 2.4 在 Shiny 服务器中代理 Web 套接字

javascript - 尝试发出 WebSocket 请求时,在 aync 任务中 HttpContext.Current.Session 为 null

websocket - 在页面之间重用websocket?

python - 支持二进制的 Tornado websockets 第 2 部分

javascript - 使用 Node.js 的服务器 WebSocket 和服务器 http