长连接、短连接与WebSocket 的区别

2023-11-03

1. 长连接与短连接

1. 短连接

    HTTP1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。HTTP的生命周期通过Request来界定,也就是说一个Request、一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。

2. 长连接

    从HTTP1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive;  

    在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。也就是说,在这样一个HTTP连接中,可以发送多个Request,接收多个Response。但是Request和Response永远是相对应的,也就是说一个request只能有一个response。并且这个response也是被动的,不能主动发起。

    此外,Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。    

2. Websocket

    Websocket其实是基于HTTP协议的一个新的协议,是HTTP协议上的一种补充,但是不等于http协议的长连接(有交集,但是基本没有关系:Websocket 属于HTML5新特性,而http协议和HTML本身没有直接关系)。

Websocket借用了HTTP的协议来完成一部分握手,解决的http的几项难题:

1. 被动性

    当服务器完成协议升级后(即由 HTTP 升级为 Websocket),服务端就可以主动推送信息给客户端;只需要经过一次HTTP请求,就可以做到源源不断的信息传送。

2. 服务器端的资源消耗

    long poll 和 ajax轮询 对服务器资源有很大的消耗:ajax轮询需要服务器有很快的资源处理速度;long poll 采用阻塞模型,需要有很高的并发,占用服务器资源空间。

    而Websocket建立后,可以直接建立持久连接,有信息的时候由服务端主动进行信息传送。

3. 处理速度慢

    HTTP协议是无状态的,每建立一次http协议,就要重新发送鉴别信息告诉服务器你是谁,因此会消耗多余无用的传输和处理的时间;Websocket只需要一次HTTP握手,就可以保持通讯状态,直到关闭请求。解决了反复解析HTTP协议,查看identity info的问题。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

长连接、短连接与WebSocket 的区别 的相关文章

随机推荐

  • Docker夺命连环15问,你能坚持第几问?

    文章目录 前言 1 什么是Docker 2 Docker的应用场景有哪些 3 Docker的优点有哪些 4 Docker与虚拟机的区别是什么 5 Docker的三大核心是什么 6 如何快速安装Docker 7 如何修改Docker的存储位置
  • QT:sqlite创建并访问数据库

    本文代码在博文 https blog csdn net frieryumao article details 93871774 基础上实现创建数据库并实现数据库访问 知识点 1 读写锁防止多线程资源竞争 2 sqlite实现数据库创建 插入
  • 浏览器兼容性测试

    浏览器相关兼容性测试时的测试要点 测试Web页面在不同浏览器的界面是否一致 a 界面是否正常加载 b 界面的CSS样式是否显示完全 c 文字图片的统一性 d 排版是否整齐一致 e 数据是否正确 f 特效是否正常显示等 测试web页面在不同浏
  • 【网络教程】Iptables官方教程-学习笔记6-IPTABLES TARGETS

    一 IPTABLES TAGRETS 本章节介绍Iptables 的目标和跳转 targets and jumps 目标和跳转负责告诉规则如何处理与规则匹配部分完全匹配的包 ACCEPT 和 DROP 是一对基础目标 他们是首先处理的 在学
  • 【esp8266】史上最详细的Arduino uno R3接入机智云教程

    原文地址 http club gizwits com thread 6728 1 1 html 本文使用arduino UNO板卡和esp8266无线WIFI模块实现了通过手机APP远程监测单片机系统采集的数据和控制一个LED的亮灭 读者将
  • Python笔记-字符串

    print hello world capitalize 让第一个单词首字母大写 print hello world upper 全大写 print hello world lower 全小写 print hello world title
  • 联想计算机BIOS启动顺序boot,联想电脑BIOS启动项如何设置U盘启动_联想电脑BIOS启动项设置U盘启动教程介绍...

    联想电脑大家应该都不陌生 台式的大家也都有使用过 笔记本也都使用过 这个品牌的电脑性能都是非常不错的 也是很多用户家庭办公必备的 那么在长时间使用以后很多电脑系统就会出现崩溃 那么这个时候就需要进行系统重新安装 那么在安装的时候可以通过设置
  • java-一次运算结束后,是否继续? Y 是,其他键结束

    请输入第一个数 4 请输入第二个数 9 请输入运算符 运算结果是13 是否继续 Y 是 其他键结束 Y 请输入第一个数 7 请输入第二个数 0 请输入运算符 除数不能为零 请重新输入 思路 一次运算结束后 是否继续 Y 是 其他键结束 用d
  • Classic AUTOSAR专题

    往期小怿向各位小伙伴介绍了Classic AUTOSAR专题之I O模块 相信看过的小伙伴对Classic AUTOSAR的I O模块已经有基本的认知了 本期为大家介绍 AUTOSAR模块之诊断模块 内容超丰富 将分两期推出哦 目录 1 概
  • Android开源框架之Afinal

    Afinal是一个android的ioc orm框架 内置了四大模块功能 FinalAcitivity FinalBitmap FinalDb FinalHttp 通过finalActivity 我们可以通过注解的方式进行绑定ui和事件 通
  • 4个mos管驱动的全桥电路原理_逆变器工作原理

    逆变器工作原理 输入接口部分 输入部分有3个信号 12V直流输入VIN 工作使能电压ENB及Panel电流控制信号DIM VIN由Adapter提供 ENB电压由主板上的MCU提供 其值为0或3V 当ENB 0时 Inverter不工作 而
  • Node 中的 Buffer 的理解及应用场景

    一 是什么 在Node应用中 需要处理网络协议 操作数据库 处理图片 接收上传文件等 在网络流和文件的操作中 要处理大量二进制数据 而Buffer就是在内存中开辟一片区域 初次初始化为8KB 用来存放二进制数据 在上述操作中都会存在数据流动
  • Linux 操作系统的基本目录

    1 Linux 的基本目录 根目录 usr 系统存放程序的目录 home 普通用户默认存放的目录 bin 系统基础命令目录 boot 包含Linux内核及系统引导所需要的文件 dev 设备文件存储目录 etc 存放系统程序或工具配置文件目录
  • spring集成shiro详解

    最近项目中要用到shiro作为权限管理 以前都是用自定义的或者spring security 所以就开始看了一些网上的文章 但是感觉都写得很零散 而且大多数都只是给了几行代码 我们得项目相对比较复杂 需要进行一些额外得改造和扩展 所以自己也
  • 配置springboot踩到的坑

    1 卸载了eclipse 结果连带卸载了java JDK 因为没有意识到所以第一次编译报错 2 run configure不会写 最后网络上查到在run 里输入 spring boot run 普通的maven 工程 run里写 clean
  • ThinkPHP 2.x/3.0 漏洞复现

    ThinkPHP框架 ThinkPHP是一款从Struts结构移植过来进行改进和完善后的web应用的开源轻量级PHP框架 ThinkPHP可在 Windows和 Linux等操作系统运行 支持 MySql Sqlite和 PostgreSQ
  • 云服务器测速脚本_Linux VPS服务器带宽测速脚本:Speedtest Linux进行网络测速方法...

    新购买VPS服务器后 当然少不了对对VPS的性能做测试了 好让自己知道新购买到的VPS性能是怎么样的 下面就来为大家介绍一个Linux系统VPS带宽测速脚本Speedtest 和Linux VPS进行网络测试的方法 一 环境准备 我们使用的
  • Fibonacci 数列

    题目描述 输入一个正整数n 求 Fibonacci 数列的第n个数 Fibonacci 数列的特点 第1 2个数为1 1 从第3个数开始 概述是前面两个数之和 即 要求输入的正整数n不超过50 输入 一个不超过50的正整数 输出 Fibon
  • IntersectionObserver与无限滚动加载

    学习链接 IntersectionObserver MDN Api IntersectionObserver API详解 Intersection observer 的概念和用法 过去 要检测一个元素是否可见或者两个元素是否相交并不容易 比
  • 长连接、短连接与WebSocket 的区别

    1 长连接与短连接 1 短连接 HTTP1 0中默认使用短连接 也就是说 客户端和服务器每进行一次HTTP操作 就建立一次连接 任务结束就中断连接 HTTP的生命周期通过Request来界定 也就是说一个Request 一个Response