当前位置: 首页 > news >正文

扫盲之webSocket

介绍 

 webSocket 是一种协议,设计用于在客户端和服务器之间提供低延迟、全双工、和长期运行的连接。

全双工:通信的两个参与方可以同时发送和接收数据,不需要等待对方的响应或传输完成

websocket就是为了解决实时通信的问题 

建立webSocket连接

通过http发送一次常规的get请求,并在请求头中带上upgrade : websocket,告诉服务器,我想从http升级成websocket。

连接就建立成功了,之后客户端和服务器双方就可以随时向彼此发送信息

心跳机制

为了保持websocket稳定的长连接,在连接建立之后服务器和客户端之间通过心跳包来保持连接状态,以防止连接以后因为时间过长没有数据传输而被切断。

心跳包:一种特殊的数据包,不包含任何数据,仅用来维持连接状态。

定期发送一个空数据帧。如果一段时间内没有收到对方的心跳包,就可以认为连接已断开

优点

双向实时通信

允许单个、长时间的连接上进行双向实时通信。在需要快速实时更新的应用程序里,比http更加高效。

降低延迟

链接一旦建立便会保持开放,数据可以在客户端和服务器之间以比http更低的延迟进行传输

更高效的资源利用

可以减少重复请求和响应的开销,因为它的连接只需要建立一次

缺点

不提供加密功能

如果有安全上的需求,需采用其他方式来确保安全性,如:SSL协议,设置黑白名单

不支持古老的浏览器

不支持IE10以上的版本。需要使用AJAX或者其他方式来替代

优化很重要

保持长连接需要服务器不断地维护和处理连接状态,需要优化性能。不做好优化,就会过度的消耗服务器的资源

和sse协议区别

  1. SSE通过HTTP持久连接,从服务器端向客户端单向传输数据。
  2. WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息,WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。只需要一次握手,就可以实现持久连接

相关文章:

扫盲之webSocket

介绍 webSocket 是一种协议,设计用于在客户端和服务器之间提供低延迟、全双工、和长期运行的连接。 全双工:通信的两个参与方可以同时发送和接收数据,不需要等待对方的响应或传输完成 websocket就是为了解决实时通信的问题 建立webSocke…...

一些硬件知识(十二)

1、请说明一下滤波磁珠和滤波电感的区别。 因此磁珠通常用于模数地的连接。 磁珠由导线穿过铁氧体组成,直流电阻很小,在低频时阻抗也很小,对直流信号几乎没有影响。 在高频(几十兆赫兹以上)时磁珠阻抗比较大&#xff0…...

Adobe Acrobat编辑器最新版下载安装 Adobe Acrobat版本齐全!

功能强大,Adobe Acrobat无疑是PDF文档处理领域的翘楚。这款软件集多种PDF文档处理功能于一身,不仅使得用户可以轻松地编辑PDF文档,更能轻松应对转换和合并等多种需求。 在编辑功能上,Adobe Acrobat的表现尤为出色。无论是添加文字…...

k8s如何使用 HPA 实现自动扩展

使用Horizontal Pod Autoscaler (HPA) 实验目标: 学习如何使用 HPA 实现自动扩展。 实验步骤: 创建一个 Deployment,并设置 CPU 或内存的资源请求。创建一个 HPA,设置扩展策略。生成负载,观察 HPA 如何自动扩展 Pod…...

Hi3861 OpenHarmony嵌入式应用入门--0.96寸液晶屏 iic驱动ssd1306

使用iic驱动ssd1306,代码来源hihope\hispark_pegasus\demo\12_ssd1306 本样例提供了一个HarmonyOS IoT硬件接口的SSD1306 OLED屏驱动库,其功能如下: 内置了128*64 bit的内存缓冲区,支持全屏刷新;优化了屏幕刷新速率,…...

代码随想录训练营第二十二天 77组合

第一题: 原题链接:77. 组合 - 力扣(LeetCode) 思路: 经典的回溯模板题: 终止条件,当中间变量用来存储单个结果的大小等于k,则将中间变量存放到结果数组中。 一个for循环横向遍历…...

Unity踩坑记录

1. 如果同时在父物体和子物体上挂载BoxCollider&#xff0c;那么当使用&#xff1a; private void OnTriggerEnter2D(Collider2D collision){if (collision.CompareTag("CardGroup")){_intersectCardGroups.Add(collision.GetComponent<CardGroup>());}} 来判…...

内容安全复习 1 - 信息内容安全概述

文章目录 信息内容安全简介网络空间信息内容安全大模型 人工智能简介 信息内容安全简介 网络空间 网络空间是融合物理域、信息域、认知域和社会域&#xff0c;控制实体行为的信息活动空间。 上图展示了网络空间安全的结构。可以看到将网络空间划分为了网络域和内容域两个部分。…...

【深度学习】python之人工智能应用篇--跨模态生成技术

跨模态生成技术概述 跨模态生成技术是一种将不同模态的数据&#xff08;如文本、图像、音频、视频等&#xff09;进行融合和转换的技术。其目标是通过将一个模态的数据作为输入&#xff0c;生成与之对应的另一个模态的输出。这种技术对于突破单一模态的局限性&#xff0c;提高…...

springboot中获取某个注解下面的某个方法的方法名,参数值等等详细实例

在Spring Boot应用中&#xff0c;获取某个类或方法上的注解及其相关信息&#xff0c;包括方法名称、参数值等&#xff0c;通常涉及到反射和Spring的AOP&#xff08;面向切面编程&#xff09;特性。下面是一个示例&#xff0c;展示如何利用Spring AOP的Around注解来拦截带有特定…...

代码随想录——跳跃游戏Ⅱ(Leetcode 45)

题目链接 贪心 class Solution {public int jump(int[] nums) {if(nums.length 1){return 0;}int count 0;// 当前覆盖最远距离下标int curDistance 0;// 下一步覆盖距离最远下标int nextDistance 0;for(int i 0; i < nums.length; i){nextDistance Math.max(nums[…...

从0-1搭建一个web项目(package.json)详解

本章分析package.json文件详解 本文主要对packge.json配置子文件详解 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等…...

图解ReentrantLock的基石AQS-独占锁的获取与释放

大家好&#xff0c;我是呼噜噜&#xff0c;我们之前聊过Java中以互斥同步的方式保证线程安全&#xff1a;Sychronized&#xff0c;这次我们来再聊聊另一种互斥同步的方式Lock&#xff0c;本文会介绍ReentrantLock及其它的基石AQS的源码解析&#xff0c;一个非常重要的同步框架 …...

Perl语言入门学习读物

1. PERL 是什么? Perl 最初的设计者为Larry Wall&#xff0c;Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。Perl一般被称为“实用报表提取语言”(PracticalExtraction andReportLanguage)&#xff0c;有时也被称做“病态折中垃圾列表器”(Pathologica…...

电脑浏览器问题

网络连接正常&#xff0c;但是浏览器就是打不开网页&#xff0c;显示未连接什么的。 搞了半天&#xff0c;不是代理服务器问题。 也不是端口问题。 也不是软件版本问题。 竟然是浏览器插件的问题&#xff0c;插件禁用&#xff0c;奇迹般的好了。 参考&#xff1a; 电脑有网…...

[Docker] Ubuntu安装Home Assistant

本文主要记载一些Ubuntu安装Home Assistant的细节,方便后面重装。 1. 安装Docker 安装依赖 $ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common添加 Docker 官方 GPG 密钥 $ curl -fsSL https://mirrors.ustc…...

浅谈请求中数据转换

目录 1. 前端 JS 数据类型2. JSON 数据类型&#xff08;数据传输格式&#xff09;3. 后端 Java 数据类型4. 后端序列化框架 Fastjson && Jackson 转换4.1. JSON 转换 Java4.2. Java 转换 JSON 1. 前端 JS 数据类型 数据类型示例Stringvar str 张三Number (数字)var a…...

Flutter学习:从搭建环境到运行

一、开发环境的搭建 本文所示内容都是在Windows系统下进行的。 1、下载 Flutter SDK Flutter 官网&#xff08;https://docs.flutter.cn/release/archive?tabwindows&#xff09; 或者通过 git clone -b master https://github.com/flutter/flutter.git 下载 2、配置环境…...

sheng的学习笔记-AI-聚类(Clustering)

ai目录 sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是聚类 在“无监督学习”(unsupervised learning)中&#xff0c;训练样本的标记信息是未知的&#xff0c;目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律&#xff0c;为进一步的数据分析提供基础。此类学…...

从0构建一个录制UI测试工具

很多UI自动化测试工具都具备录制UI自动化测试的能力&#xff0c;例如playwright&#xff0c;可以通过playwright vscode插件完成录制&#xff0c;如下图所示&#xff0c;当选择录制脚本时&#xff0c;会打开一个浏览器&#xff0c;在浏览器中输入被测应用url&#xff0c;用户在…...

从GOPATH到Go Mod:老项目迁移必知的5个文件结构陷阱

从GOPATH到Go Mod&#xff1a;老项目迁移必知的5个文件结构陷阱 当Golang社区在2018年推出Go Modules时&#xff0c;很少有人预料到这个看似简单的包管理工具会成为Go语言发展史上的分水岭。四年后的今天&#xff0c;仍有大量遗留项目困在GOPATH的泥潭中&#xff0c;而迁移过程…...

Redis未授权访问漏洞实战:从SSH公钥到反弹shell的5种利用方式详解

Redis未授权访问漏洞深度攻防&#xff1a;5种高阶利用与防御方案 Redis作为高性能键值数据库&#xff0c;其未授权访问漏洞长期位居企业安全风险Top 10。本文将突破常规教程框架&#xff0c;从攻击者视角剖析5种实战利用手法&#xff0c;同时提供企业级防御方案。不同于基础复现…...

Arduino高性能WebSocket客户端库深度解析

1. Arduino-Websocket-Fast 库深度解析&#xff1a;面向嵌入式物联网的高性能 WebSocket 客户端实现1.1 设计动因与工程定位在嵌入式物联网&#xff08;IoT&#xff09;系统开发中&#xff0c;WebSocket 协议因其全双工、低开销、长连接特性&#xff0c;已成为设备与云平台间实…...

类型注解写错=线上Bug潜伏!:3个导致Pydantic崩溃、FastAPI 500、mypy静默失效的致命细节

第一章&#xff1a;类型注解写错线上Bug潜伏&#xff01;&#xff1a;3个导致Pydantic崩溃、FastAPI 500、mypy静默失效的致命细节泛型未参数化&#xff1a;List 而非 List[str] 的隐式陷阱 Pydantic v2 强制要求泛型类型必须显式参数化。若仅写 List&#xff08;而非 List[str…...

HertzBeat自定义监控模板开发终极指南:打造专属监控能力 [特殊字符]

HertzBeat自定义监控模板开发终极指南&#xff1a;打造专属监控能力 &#x1f680; HertzBeat是一款开源、高性能的实时监控系统&#xff0c;支持自定义监控、无代理部署和类Prometheus架构。本指南将带你从零开始掌握HertzBeat自定义监控模板开发的核心技能&#xff0c;快速构…...

Thorium浏览器:重新定义现代网页浏览性能标准

Thorium浏览器&#xff1a;重新定义现代网页浏览性能标准 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the README.md. …...

从零开始:用ODrive和霍尔编码器打造你的第一个BLDC电机控制项目(Ubuntu环境)

从零开始&#xff1a;Ubuntu环境下用ODrive与霍尔编码器控制BLDC电机的完整指南 第一次接触无刷直流电机&#xff08;BLDC&#xff09;控制时&#xff0c;我被它高效、低噪音的特性所吸引&#xff0c;但复杂的控制逻辑让人望而却步。直到发现ODrive这个开源项目&#xff0c;它让…...

Vue中实现动态标签页的切换优化与状态管理

1. 动态标签页的核心需求与实现思路 在后台管理系统这类多页面应用中&#xff0c;动态标签页几乎是标配功能。想象一下你正在使用某电商后台&#xff0c;同时开着商品管理、订单处理和用户分析三个页面&#xff0c;这时候标签页的流畅切换和状态保持就显得尤为重要。 我经历过一…...

【GNSS定位原理及算法杂记2】GNSS观测量:从捕获到解算,揭秘接收机内部信号处理链路

1. GNSS观测量&#xff1a;定位技术的三大支柱 当你打开手机地图查看自己的位置时&#xff0c;背后是GNSS接收机在默默工作。它通过处理来自太空卫星的信号&#xff0c;最终计算出你所在的位置。这个过程中最关键的就是三种观测量&#xff1a;伪距、载波相位和多普勒频移。这三…...

2026年主流接口测试平台慢因分析与选型参考

2026年主流接口测试平台慢因分析与选型参考 核心观点摘要 2026年接口测试响应慢核心诱因可归为三类&#xff1a;工具本身并发调度能力不足、协议适配不全导致额外转码开销、缺少AI智能链路优化能力&#xff0c;多数企业接口测试效率低与工具选型不当直接相关。本次盘点覆盖当前…...