长/短 链接/轮询 和websocket

news/2024/11/22 20:29:39/

短连接和长连接

短连接

  • http协议底层基于socket的tcp协议,每次通信都会新建一个TCP连接,即每次请求和响应过程都经历”三次握手-四次挥手“
  • 优点:方便管理
  • 缺点:频繁的建立和销毁连接占用资源

长连接

  • 客户端和服务端之间只有一条TCP通信连接,以后所有的请求都使用这条连接,也称为持久连接。

  • 优点:多次请求-响应基于一条连接,避免资源浪费。

  • 缺点:客户端的数量增加,服务端承受的压力增大。对每个请求仍然要单独发header,Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。

总结

  • 长短连接指的是客户端和服务端建立和保持TCP连接的机制。
  • 不论是短连接还是长连接,都是客户端主动向服务端发请求,才能获悉数据,服务端是无法主动给客户端推送信息的。
  • 服务端主动给客户端推送消息最简单的方式是采用轮询,即客户端每隔一段时间就向服务端发出一个询问,获取服务端最新的消息。最典型的应用就是聊天室。

短轮询和长轮询

短轮询

  • 浏览器每隔一段时间向服务端发送http请求,服务器端在收到请求后,不论是否有数据更新,都直接进行响应。这种方式实现的即时通信,本质上还是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时地收到服务器端的数据的变化。
  • 优点:比较简单,易于理解;
  • 缺点:由于需要不断的建立 http 连接,严重浪费了服务器端和客户端的资源。当用户增加时,服务器端的压力就会变大,这是很不合理的。

长轮询:

  • 首先由客户端向服务器发起请求,当服务器收到客户端发来的请求后,服务器端不会直接进行响应,而是先将 这个请求挂起,然后判断服务器端数据是否有更新。

    如果有更新,则进行响应,如果一直没有数据,则到达一定的时间限制才返回。客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。

  • 优点:「明显减少了很多不必要的 http 请求次数」,相比之下节约了资源。

  • 缺点:实现复杂,且连接挂起也会导致资源的浪费。

总结

  • 短轮询和长轮询指的是客户端请求服务端,服务端给予响应的方式。
  • 轮询的方式可以解决服务端主动向客户端推送消息的需求,但是轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。
  • 为了更好的解决这个问题,于是出现了WebSocket

WebSocket

简介

  • WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。

  • 服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

  • 可以发送文本,也可以发送二进制数据。

  • 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

websocket:websocket是长连接,是一个真的全双工,第一次tcp链路建立以后,后续所有数据双方都主动发送,不需要发送请求头,与传统的 http 协议不同,该协议允许由服务器主动的向客户端推送信息。与HTTP长连接不同,websocket可以更灵活的控制连接关闭的时机,而不是HTTP协议的Keep-Alive一到,服务端立马就关闭(这样很不人性化)。

优点

  • 建立在 TCP 协议之上,服务器端的实现比较容易。
  • 与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
  • 数据格式比较轻量,性能开销小,通信高效。
  • 没有同源限制,客户端可以与任意服务器通信。

缺点

  • 使用 WebSocket 协议的缺点是在服务器端的配置比较复杂。


http://www.ppmy.cn/news/57710.html

相关文章

用ChatGPT问DotNet的相关问题,发现DotNet工程师的前景还不错

本人最近费了九牛二虎之力注册了一个ChatGPT账号,现在就给大家分享一下,问一下关于.NET的问题,看看ChatGPT的AI功能具体如何? 一、C#跟其它语言比较的优势 回答: C#是一门编程语言,它是为 Microsoft 的 …

永磁同步电机(PMSM)无传感器控制基于滑膜观测器Matlab/Simulink仿真分析

文章目录 前言一、状态观测器二、滑膜状态观测器2.1.滑膜观测器的原理2.2.传统的滑膜观测器2.3.改进的滑膜观测器 三、Matlab/Simulink仿真分析3.1.仿真电路分析3.1.1 电机控制模式切换3.1.2 速度环控制3.1.3 电流环控制3.1.4 电机主电路 3.2.仿真结果分析 总结 前言 本章节采…

【前端知识】内存泄漏与垃圾回收机制 (下)

【前端知识相关分享】内存泄漏与垃圾回收机制 (下) 6. 内存泄漏的解决方法6.1 解决方法概述6.2 什么是垃圾6.3 垃圾回收机制的定义及规则6.4 垃圾回收算法的基本流程 7. 垃圾回收的常见算法7.1 引用计数7.2 标记清除7.3 复制算法7.4 标记整理&#xff08…

基于微信小程序的垃圾分类系统的研究与实现(附源码和教程)

1. 简介 本文介绍的事基于微信小程序的垃圾分类系统,主要实现的功能有登录、注册、垃圾分类查询、垃圾预约回收、垃圾分类功能。 2.系统设计与实现 本章节是论文的重点,基于上一章介绍的总体设计框架的搭建,详细对小程序的页面布局、流程设…

LVS +Keepalived 高可用群集部署

一、LVSKeepalived 高可用群集 在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的…

(构造)(两个相邻特殊点之间的不定长度段维护) Dango

C - Dango (atcoder.jp) #include <iostream> #include <string> using namespace std;int main() {int N;cin >> N;string S;cin >> S;S S -; // 末尾‘-’int ans -1;int j -1;for (int i 0; i < N; i) {if (S[i] -) { // 结尾…

从苏宁电器到卡巴斯基(第二部)第31篇:我当高校教师的这几年 VII

目录 必须要开始做前端开发了 我感觉,三本学生并不比985硕士研究生差 必须要开始做前端开发了 我一开始与X高校签约,签的是《任务工作岗位劳动合同》,合同期限是一年,具体内容是“学院网络安全维护及信息化开发”工作。但由于学校人手不足,因此我也是需要承担授课以及带…

CSS布局基础(定位)

定位 定位定位方式定位偏移其他知识点z-index父相子绝固定定位贴着版心绝对定位到父盒子中央绝对定位和固定定位浮动效果原生浮动和定位产生的浮动的区别 定位 如字面意思&#xff0c;定位的作用就是将元素&#xff0c;移动到指定的地方. 浮动一般用于横向排列块级元素&#x…