1、Http长连接

Http的请求时在TCP连接上进行发送的,TCP的连接分为长连接和短连接

打开www.baidu.com,查看Connection ID 如下图。 Connection ID代表TCP连接的ID,可以区分是否用的是同一个TCP连接

如果域名不一样,Connection ID会不一样。

比如Chrome允许并发创建6个TCP连接,其它要连接要等这6个创建完成,才能创建。

2、如何保证长连接

keep-alive代表这个连接时保持的,就不会请求完毕后就被关闭

请求头中也有keep-alive

3、测试

1)server.js

const http = require('http');
const fs = require('fs') http.createServer(function(request, response){
console.log('request com', request.url) //html格式
if(request.url === "/"){
const html = fs.readFileSync("test.html",'utf-8')
response.writeHead(200,{
'Content-Type':'text/html'
})
response.end(html)
} //图片JPG格式
else{
const img = fs.readFileSync("test.jpg")
response.writeHead(200,{
'Content-Type':'image/jpg'
})
response.end(img)
} }).listen(8888); console.log('server listening on 8888')

  

2) html 文件

<html>
<head>
<title>Document</title>
</head>
<body>
<img src="/test1.jpg" alt="">
<img src="/test2.jpg" alt="">
<img src="/test3.jpg" alt="">
<img src="/test4.jpg" alt="">
<img src="/test5.jpg" alt="">
<img src="/test6.jpg" alt="">
<img src="/test7.jpg" alt="">
</body> </html>

  

还有一张test.jpg 文件

输入http://localhost:8888/  如下图:

如果html加载更多的图片,并发数为6

<html>
<head>
<title>Document</title>
</head>
<body>
<img src="/test1.jpg" alt="">
<img src="/test2.jpg" alt="">
<img src="/test3.jpg" alt="">
<img src="/test4.jpg" alt="">
<img src="/test5.jpg" alt="">
<img src="/test6.jpg" alt="">
<img src="/test7.jpg" alt=""> <img src="/test11.jpg" alt="">
<img src="/test12.jpg" alt="">
<img src="/test13.jpg" alt="">
<img src="/test14.jpg" alt="">
<img src="/test15.jpg" alt="">
<img src="/test16.jpg" alt="">
<img src="/test17.jpg" alt=""> <img src="/test21.jpg" alt="">
<img src="/test22.jpg" alt="">
<img src="/test23.jpg" alt="">
<img src="/test24.jpg" alt="">
<img src="/test25.jpg" alt="">
<img src="/test26.jpg" alt="">
<img src="/test27.jpg" alt="">
</body> </html>

  

4、关闭长连接

则每个http请求都会创建一个TCP连接

Http长连接的更多相关文章

  1. TCP同步与异步,长连接与短连接【转载】

    原文地址:TCP同步与异步,长连接与短连接作者:1984346023 [转载说明:http://zjj1211.blog.51cto.com/1812544/373896   这是今天看到的一篇讲到T ...

  2. HTTP的长连接和短连接

        本文总结&分享网络编程中涉及的长连接.短连接概念.     关键字:Keep-Alive,并发连接数限制,TCP,HTTP 一.什么是长连接 HTTP1.1规定了默认保持长连接(HTT ...

  3. C#中HttpClient使用注意:预热与长连接

    最近在测试一个第三方API,准备集成在我们的网站应用中.API的调用使用的是.NET中的HttpClient,由于这个API会在关键业务中用到,对调用API的整体响应速度有严格要求,所以对HttpCl ...

  4. Erlang C1500K长连接推送服务-内存

    上篇 Erlang C1500K长连接推送服务-性能 提到:150w连接,使用了23GB内存,每个连接占用15KB,约一半是内核使用. 大概分析一下: 1. Erlang 节点 12GB,内部因为有内 ...

  5. Erlang C1500K长连接推送服务-性能

    Whatsapp已经使用Erlang在生产环境跑到96GB内存单机 3M长连接,参加:WhatsApp的Erlang世界.毕竟业务级别能达到Whatsapp那样极少,现在只有千万级,单机太多挂一台影响 ...

  6. HTTP的长连接和短连接——Node上的测试

        本文主要从实践角度介绍长.短连接在TCP层面的表现,借助Node.JS搭建后台服务,使用WinHTTP.Ajax做客户端请求测试,最后简单涉及WebSocket.     关键字:长连接.短连 ...

  7. 分享一个基于长连接+长轮询+原生的JS及AJAX实现的多人在线即时交流聊天室

    实现网页版的在线聊天室的方法有很多,在没有来到HTML5之前,常见的有:定时轮询.长连接+长轮询.基于第三方插件(如FLASH的Socket),而如果是HTML5,则比较简单,可以直接使用WebSoc ...

  8. LinkedIn的即时消息:在一台机器上支持几十万条长连接

    最近我们介绍了LinkedIn的即时通信,最后提到了分型指标和读回复.为了实现这些功能,我们需要有办法通过长连接来把数据从服务器端推送到手机或网页客户端,而不是许多当代应用所采取的标准的请求-响应模式 ...

  9. (转)HTTP 长连接和短连接

    1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...

  10. HTTP长连接和短连接

    1.HTTP协议的五大特点1)支持客户/服务器模式2)简单快速3)灵活4)无连接每次连接只处理一个请求,服务器处理完客户的请求,并受到客户的应答后,断开连接.5)无状态协议不会记录服务器客户端状态. ...

随机推荐

  1. nginx conflict server_name 0.0.0.0:80

    #include /etc/nginx/conf.d/*.conf 注释掉即刻

  2. JavaScript 获得客户端IP

    Below are all the free active IP lookup services I could find and the information they return. If yo ...

  3. change事件同一文件多次选中

    最近在做图片上传的时候,碰到了一点问题,那就是选择内容相同,change事件执行不了 网上搜索了答案,使用off('change')好像也不行 最终找到一种解决办法 使用replaceWith重置in ...

  4. 原型图 ER 8.0的注册码

    axuer8.0注册码Licensee:米 业成 (STUDENT)Key:nFmqBBvEqdvbiUjy8NZiyWiRSg3yO+PtZ8c9wdwxWse4WprphvSu9sohAdpNnJ ...

  5. bat给文件追加换行内容

    如果有很多文件怎么给文件结尾追加换行内容呢? bat似乎没有专门的换行符,要实现似乎只能echo一下 set filename="123.txt" echo.>>%fi ...

  6. java第八周作业

    分析代码: public final class LineItemKey implements Serializable { private Integer customerOrder; privat ...

  7. 设置Ubuntu右侧显示扩展屏幕。。。

    sudo xrandr --output VGA1 --right-of LVDS1 --auto

  8. 调试利器GDB(上)

    什么是GDB: GDB应用: 静态分析工具与动态分析工具: GDB启动方式: GDB启动之后会有一个交互式的命令行,可以输入GDB特定的命令让GDB去工作. gdb test.out意思是这一次gdb ...

  9. js bind绑定事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. cocos2dx取真正随机数

    由于c++的随机数其实是用了一张随机表,所以不是真正意义上的随机,cocos2dx中操作的时候会发现每次 重新获取都会得到同样的值,那么解决办法采用置随机数种子,利用时间函数(时间唯一性),操作如下 ...