# HTTP 长连接
# Http 长连接
在 HTTP/1.0 中默认使用短连接。也就是说,客户端和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个 HTML 或其他类型的 Web 页中包含有其他的 Web 资源(如 JavaScript 文件、图像文件、CSS 文件等),每遇到这样一个 Web 资源,浏览器就会重新建立一个 HTTP 会话。
而从 HTTP/1.1 起,默认使用长连接,用以保持连接特性。使用长连接的 HTTP 协议,会在响应头加入这行代码: 在 Request Headers 中可以看到。
Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive 不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如 Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTP 协议的长连接和短连接,实质上是 TCP 协议的长连接和短连接。
# node 实践
浏览器并发连接为 6 个连接,如果超过 6 个,其他的会等前面的关闭,就会发送请求,可以在浏览器中打开 Connection ID 查看每个连接是不是复用的;
'Connection': 'close' 为关闭常连接,每次发送完请求后,就直接关闭 TCP 连接,再次发送请求的时候再进行 TCP 连接。
const http = require('http')
const fs = require('fs')
http.createServer(function(req, res) {
const html = fs.readFileSync('test.html', 'utf-8')
const img = fs.readFileSync('1.png')
if (req.url === '/') {
res.writeHead(200, {
'Content-Type': 'text/html',
'Connection': 'close'
})
res.end(html)
} else {
res.writeHead(200, {
'Content-Type': 'image/png',
'Connection': 'close'
})
res.end(img)
}
}).listen(8888)
阅读量:
评 论:
← cookie和session 数据协商 →