Http长连接

关于 HTTP 长连接 使用长连接能够减少建立销毁连接的消耗,三次握手、四次挥手对性能影响是很大的。一般 RPC 如 Dubbo 默认都是长连接的,HTTP 1.1 之上也可以支持长连接了,HTTP 2.0 也支持了单一长连接的多路复用。 一般 HTTP 服务前面都会挂 nginx 做负载均衡,那么长连接的设置也分为从客户端到 nginx、从 nginx 到服务端两部分。 如果使用 Java 的 apache HTTPC... 阅读详情

HTTP实现长连接

HTTP是无状态的 
也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话

HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。

如果浏览器或者服务器在其头信息加入了这行代码

Connection:keep-alive

TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了带宽。

实现长连接要客户端和服务端都支持长连接。

如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, web服务器需要在返回给客户端HTTP头信息中发送一个Content-Length(返回信息正文的长度)头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然 后在正式写出内容之前计算它的大小

无论客户端浏览器 (Internet Explorer) 还是 Web 服务器具有较低的 KeepAlive 值,它都将是限制因素。例如,如果客户端的超时值是两分钟,而 Web 服务器的超时值是一分钟,则最大超时值是一分钟。客户端或服务器都可以是限制因素

在header中加入 --Connection:keep-alive 
在HTTp协议请求和响应中加入这条就能维持长连接。 
再封装HTTP消息数据体的消息应用就显的非常简单易用


解释1

所谓长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差,   
所谓短连接指建立SOCKET连接后发送后接收完数据后马上断开连接,一般银行都使用短连接

解释2

长连接就是指在基于tcp的通讯中,一直保持连接,不管当前是否发送或者接收数据。   
而短连接就是只有在有数据传输的时候才进行连接,客户-服务器通信/传输数据完毕就关闭连接。

解释3

长连接和短连接这个概念好像只有移动的CMPP协议中提到了,其他的地方没有看到过。   
通信方式   
各网元之间共有两种连接方式:长连接和短连接。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对 CMPP消息的发送。   
现阶段,要求ISMG之间必须采用长连接的通信方式,建议SP与ISMG之间采用长连接的通信方式。

解释4

短连接:比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。   
长连接:有些服务需要长时间连接到服务器,比如CMPP,一般需要自己做在线维持。



最近在看“服务器推送技术Comet”,在B/S结构中,通过某种magic使得客户端不需要通过轮询即可以得到服务端的最新信息(比如股票价格),这样可以节省大量的带宽。

     传统的轮询技术对服务器的压力很大,并且造成带宽的极大浪费。如果改用ajax轮询,可以降低带宽的负荷(因为服务器返回的不是完整页面),但是对服务器的压力并不会有明显的减少。

    而推技术(push)可以改善这种情况。但因为HTTP连接的特性(短暂,必须由客户端发起),使得推技术的实现比较困难,常见的做法是通过延长http连接的寿命,来实现push。

    接下来自然该讨论如何延长http连接的寿命,最简单的自然是死循环法:

    【servlet代码片段】

     public void doGet(Request req, Response res) {

          PrintWriter out = res.getWriter();

          ……

          正常输出页面

          ……

          out.flush();

          while (true) {

                out.print("输出更新的内容");

                out.flush();

                Thread.sleep(3000);

          }

      }

     如果使用观察者模式则可以进一步提高性能。

     但是这种做法的缺点在于客户端请求了这个servlet后,web服务器会开启一个线程执行servlet的代码,而servlet由迟迟不肯结束,造成该线程也无法被释放。于是乎,一个客户端一个线程,当客户端数量增加时,服务器依然会承受很大的负担。

     要从根本上改变这个现象比较复杂,目前的趋势是从web服务器内部入手,用nio(JDK 1.4提出的java.nio包)改写request/response的实现,再利用线程池增强服务器的资源利用率,从而解决这个问题,目前支持这一非J2EE官方技术的服务器有Glassfish和Jetty(后者只是听说,没有用过)。


如何在 Nginx 中配置 HTTP 长连接? 通过正确配置 Nginx 中的 HTTP 长连接,我们能够显著提升网站和应用的性能,为用户带来更流畅的体验。就像给我们的网络世界修建了一条条高效的快速通道。随着技术的不断发展,HTTP 协议也在不断演进,未来可能会有更多更先进的连接管理方式出现。但无论如何,掌握好当前的技术,不断优化和改进,始终是我们追求卓越性能的不二法门。🎉相关推荐🍅关注博主🎗️带你畅游技术世界,不错过每一次成长机会!📘Nginx 技术专栏🍅优快云-技术社区。 阅读详情

相关推荐

CDS 里的 Text 建模,别把描述字段当成普通属性随手一放

摘要: 在CDS Query建模中,文本字段(如名称、描述等)常被低估,但其处理方式直接影响分析模型的可用性。简单场景可采用Inline Text Model,直接在维度视图中声明文本字段,适用于语言和时间无关的文本。复杂场景(如多语言或时间依赖文本)则需独立建Text CDS View,并通过Association关联到主数据维度。关键点包括:文本字段需用@Semantics.text: true标注,语言字段需标记@Semantics.language: true并作为Key,时间依赖文本需明确有效期字

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3309

HTTP Connection 头(header)说明:keep-alive和closer的区别

HTTP Connection 头(header)说明:keep-alive和closer的区别 前言 在http请求时,我们一般会在request header 或 response header 中看到”Connection:Keep-Alive”或 “Connection:close”,这里具体的含义是有关http 请求的是否保持长连接,即链接是否复用,每次请求是复用已建立好的请求,还是重新...

海渊_haiyuan的博客 5万+

AnyGrasp实战指南:从环境配置到抓取检测与跟踪

本文详细介绍了AnyGrasp从环境配置到抓取检测与跟踪的实战指南。涵盖硬件要求、关键依赖安装避坑、抓取检测与跟踪的实战技巧,以及常见问题解决方案和性能优化建议,帮助开发者快速掌握这一高精度物体抓取检测与跟踪技术。

weixin_33712987的博客 274

header connection 个人理解

在响应头中 看到有如下代码HTTP/1.1 200 OK Date: Thu, 19 Oct 2017 06:26:46 GMT Server: Apache/2.4.23 (Win64) PHP/5.6.25 X-Powered-By: PHP/5.6.25 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, n

发粪涂墙的博客 3224

关于RTP时间戳以及播放器对时间戳的处理

首先,了解时间戳几个基本概念: 时间戳单位:时间戳计算的单位不是秒之类的单位,而是由采样频率所代替的单位,这样做的目的就是为了是时间戳单位更为精准。比如说一个音频的采样频率为8000Hz,那么我们可以把时间戳单位设为1 / 8000。 时间戳增量:相邻两帧之间的时间差(以时间戳单位为基准)。 采样频率: 有些地方也叫时钟频率,即 每秒钟抽取样本的次数,例如音频的采...

toshiba689的专栏 3052

微信抢红包神器自动抢软件

微信抢红包神器自动抢软件

weixin_44006731的博客 8081

http长连接和短连接

<br />HTTP是无状态的 <br />也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话<br />HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的

maikforever 的专栏 1463

调用IP核、移植/复制IP核以及解决IP核被锁住/红锁问题(基于vivado)

解决不同工程IP核之间复制调用以及IP核红锁问题,让开发更简单!

weixin_44502554的博客 1万+

HTTP 长连接

HTTP 请求是在TCP连接上进行发送的。而TCP的连接分为:长连接,短连接。 长连接:HTTP 请求发送的时候,要先去创建一个TCP连接,然后在这个TCP连接上,把HTTP 的请求发送并接受完。一次HTTP请求结束了,浏览器就会跟服务端商量是否关闭TCP 连接。如果不关闭,TCP 连接一直开着,会有一定的消耗,但如果还有请求,可以直接在这个TCP 上发送(不需要经过三次握手这样的连接的消耗);...

purple_lumpy的博客 1万+

别再死记硬背了!用Wireshark抓包实战,5分钟搞懂GRE、L2TP、IPsec的区别

本文通过Wireshark抓包实战,详细解析GRE、L2TP和IPsec三大隧道协议的核心差异与应用场景。从报文结构到配置示例,帮助网络工程师快速掌握这些协议的本质,提升VPN部署与故障排查能力。特别适合准备HCIP认证的工程师深化理解。

weixin_30352645的博客 439

9、眼底图像智能分析:糖尿病视网膜病变的自动化识别与分级系统

本博客介绍了一种基于深度学习的糖尿病视网膜病变(DR)自动化识别与分级系统。该系统通过视网膜图像的预处理、数据增强、集成模型的构建与优化,实现了对DR的高效识别与分级。识别系统采用二分类任务,准确率达到97.67%,而分级系统通过四分类策略取得了95.2%的准确率。系统在基层社区和医院中具有广泛的应用前景,为DR的早期筛查和精准诊断提供了有效工具。

pea55的博客 145

HTTP 长连接原理

1. HTTP长连接原理

学无止境的博客 1万+

杰理AC696N使用ADC检测电位器调音量教程

本教程详细介绍了在杰理AC696N芯片上使用ADC功能检测电位器电压值的方法。主要内容包括:硬件连接方式(电位器VCC/OUT/GND分别接3.3V、PA3引脚和地线),10位ADC配置(0-1023对应0-3.3V),以及核心代码实现。关键步骤涉及ADC采样通道初始化、GPIO引脚配置(关闭数字输入和上下拉电阻),以及通过定时器实现50Hz采样频率。教程还详解了ADC值到系统音量的线性映射算法,并提供了完整的代码示例和调试方法,帮助开发者实现电位器实时控制音量的功能。

qq_42014563的博客 1246

HTTP长连接设置

1. HTTP长连接是指在一个TCP长连接中发送和接收多个HTTP报文。 相应地,短连接则指发送一个HTTP请求后直接关闭TCP连接。 HTTP1.0默认使用短连接,可以在客户端HTTP报文头部添加Connection:Keep-alive启用长连接请求。 HTTP1.1默认使用长连接,可以在客户端HTTP报文头部添加Connection:Closed关闭长连接请求。 HTTP1.1的请求报文和响...

geekooler的博客 4373

【原创】汇川H5U PLC控制伺服的方法

6、在线调试-进入伺服调试,可以在本软件上进行调试,可以实现原点回归、正向点动、反向电动、使能(这里使能打开时触摸屏上的使能不能打开,会冲突)、复位、停止(如下图所示)。5、在原点返回设置中一般情况下对原点信号、正限位、负限位、原点返回方向、原点返回方式进行设置,其他设置默认不改(如下图所示)。3、在单位换算设置上只需要修改脉冲数和移动量(根据伺服配套导轨上名牌进行设置),其他设置默认不改(如下图所示)。11、双击后右边出现编辑框 在上半部分定义变量(IN、INOUT、OUT、VAR)(如下图所示)。

Qinmingyue13的博客 6671

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

HTTP长连接

演练使用HTTP长连接的过程,讲述和TCP Keep-Alive的区别,同时提供了更好的优化方案。的文章,可以关注我的公众号(程序员麻辣烫)我的个人博客为:https://shidawuhen.github.io/设计模式招聘思考存储算法系列读书笔记小工具架构网络Go语言。

7141

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

http长连接

http长连接与短连接 http协议是基于TCP协议的,http长连接即指的是TCP的长连接。TCP协议是一个面向连接、可靠、有着拥塞控制以及流量控制的传输层协议。 http长连接问题由来 http是一个无状态的协议,简单点来说,如果同一个浏览器在接连发起2次http请求的话,http无法在第2次请求中识别出这个浏览器刚才交互过,所以无状态可以理解为无记忆性。 短连接 在长连接出现之前,http1.0中都是使用的短连接,其特点是一次http交互完成后就会断开连接。由于http协议是基于TCP协议的,而TCP

qq_41801117的博客 5151

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HTTP长连接和WebSocket长连接的区别

要理解HTTP长连接和websocket长连接的区别,首先要理解一下什么是HTTP的长连接和短连接。 一、HTTP的长连接和短连接区别 首先需要消除一个误解:HTTP协议是基于请求/响应模式的,因此客户端请求后只要服务端给了响应,本次HTTP请求就结束了,没有长连接这一说。那么自然也就没有短连接这一说了。 所谓的HTTP分为长连接和短连接,其实本质上是说的TCP连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才有真正的长连接和短连接这一说。 HTTP协议是应用层的协议,

和光同尘的博客 1万+

详解HTTP 长连接

HTTP长连接是常见的优化手段。因此本文选择介绍一下 HTTP (keepalive)和 TCP 长连接这个老生常谈的话题。

BigManing的博客 4626

TCP长连接和HTTP长连接

一、TCP 长连接 (Keep Alive) TCP 长连接是一种保持 TCP 连接的机制。当一个 TCP 连接建立之后,启用 TCP Keep Alive 的一端便会启动一个计时器,当这个计时器到达 0 之后,一个 TCP 探测包便会被发出。这个 TCP 探测包是一个纯 ACK 包,但是其 Seq 与上一个包是重复的。 打个比喻,TCP Keep Alive 是这样的: TCP 连接两端好比两个人,这两个人之间保持通信往来(建立 TCP 连接)。如果他俩经常通信(经常发送 TCP 数据),那这个 TCP

qq_45933343的博客 2622

HTTP长连接实现原理

HTTP长连接浏览器向服务器进行一次HTTP会话访问后,并不会直接关闭这个连接,而是会默认保持一段时间,那么下一次浏览器继续访问的时候就会再次利用到这个连接。在HTTP/1.1版本中,默认的连接都是长连接,我们可以通过Connection: keep-alive字段进行指定。HTTP短连接浏览器向服务器每进行一次HTTP操作都要建立一个新的连接。在HTTP/1.0版本中默认是短链接。

weixin_64051447的博客 1221

TCP长连接和HTTP长连接对比

TCP长连接和HTTP长连接的比较

ckckckcckckc的博客 936
上一篇: Http
下一篇: android长连接心跳机制
rabbit_in_android
博客等级 码龄11年 45粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值