WebSocket基础知识

WebSocket是什么?

WebSocket 是一种网络通信协议,它提供了全双工通信机制,允许服务器主动向客户端发送消息,而不仅限于响应客户端的请求。它使用类似于 HTTP 的握手来建立连接,然后使用单独的持久连接来进行通信。这种方式使得 WebSocket 可以在浏览器和服务器之间进行实时通信,而不需要多次发送 HTTP 请求来获取数据。这意味着连接是持久的,它一直保持打开,直到有一方主动关闭连接。这使得 WebSocket 非常适合用于实时应用程序,因为它不需要不断地建立和关闭连接。

WebSocket应用领域

WebSocket 协议由于其全双工通信的特性,非常适合需要实时数据传输的应用场景。以下是一些主要的 WebSocket 应用领域:

  1. 即时通讯(IM):实现如聊天应用、在线客服系统等,允许用户之间进行实时文本、语音或视频通信。

  2. 在线游戏:支持多人在线游戏(MMO)的实时互动,提供低延迟的游戏体验。

  3. 股票交易应用:实时更新股票价格和市场数据,为交易者提供即时信息。

  4. 协同编辑:如在线文档或电子表格,允许多人同时编辑同一文档并实时看到其他人的更改。

  5. 物联网(IoT):连接和控制分布式设备,如智能家居系统。

  6. 实时数据更新:体育赛事的实时更新、新闻推送等。

  7. 协同工作工具:如项目管理工具,团队成员可以实时更新和查看项目状态。

  8. 可视化大屏数据实时更新:用于展示实时的业务数据和分析结果。

WebSocket怎样建立连接?

在建立 WebSocket 连接之前,需要进行一个握手过程,通常是通过 HTTP 请求完成的。

WebSocket 连接通常在客户端(例如浏览器)和服务器之间建立。

客户端发送一个 HTTP 请求来建立连接,然后服务器返回一个确认消息,表示已建立连接。

之后,客户端和服务器可以通过这个连接进行双向通信。

客户端可以向服务器发送消息,服务器也可以向客户端发送消息。

消息可以是任意的字节数组,并且可以使用任意的格式进行编码。

建立WebSocket连接

WebSocket 是一种必不可少的客户端—服务器通信工具,需要充分了解其实用性并避免使用场景才能从其最大潜力中获益。

WebSocket 与 HTTP 的区别

WebSocket:

  1. 持久连接:WebSocket 旨在建立一个持久的连接,一旦建立,就可以在客户端和服务器之间进行双向通信,而不需要像 HTTP 那样为每个请求和响应建立和关闭连接。

  2. 全双工通信:WebSocket 提供了真正的全双工通信,客户端和服务器可以同时发送和接收数据,而 HTTP 是基于请求/响应模式的半双工通信。

  3. 低延迟:由于不需要为每次通信重新建立连接,WebSocket 通常具有更低的通信延迟。

  4. 实时性:WebSocket 非常适合需要实时数据传输的应用,如在线游戏、股票行情更新、实时通知等。

  5. 头部信息:WebSocket 在连接建立后,通信时不需要携带 HTTP 头部信息,这减少了数据传输的开销。

  6. 控制开销:HTTP 协议的请求和响应都需要携带完整的头部信息,而 WebSocket 连接建立后,消息传输不需要这些额外的控制信息。

  7. 安全性:WebSocket 可以通过 wss://(WebSocket Secure)提供加密连接,类似于 HTTPS。

  8. 应用层协议:WebSocket 是一个独立的、应用层的通信协议,它不依赖于 HTTP。

HTTP:

  1. 无状态协议:HTTP 是一个无状态协议,每个请求都是独立的,服务器不会在请求之间保留任何会话信息。

  2. 请求/响应模式:HTTP 工作在客户端-服务器模型上,客户端发送请求,服务器响应请求。

  3. 连接非持久性:HTTP/1.1 支持持久连接(Connection: keep-alive),但在 HTTP/1.0 和早期版本中,每个请求/响应后连接都会关闭。

  4. 头部信息:HTTP 通信需要携带请求头和响应头,这增加了数据传输的开销。

  5. 不适合实时应用:由于 HTTP 的设计,它不适合需要实时双向通信的应用。

  6. 安全性:HTTP 本身不提供加密,但可以通过 HTTPS(HTTP over SSL/TLS)提供安全通信。

  7. 丰富的语义:HTTP 提供了丰富的语义,如不同的请求方法(GET, POST, PUT, DELETE 等)和状态码,适合于各种不同的应用场景。

  8. 广泛支持:几乎所有的浏览器和服务器都支持 HTTP,而 WebSocket 的支持可能因浏览器和服务器的不同而有所差异。

WebSocket 与 HTTP 的选择

WebSocket 是一种框架双向协议。与此相反,HTTP 是一种单向协议,作用于 TCP 协议之上。由于WebSocket协议能够支持不间断的数据传输,因此主要用于实时应用程序开发。HTTP 是无状态的,用于开发RESTful和 SOAP 应用程序。SOAP 仍然可以使用 HTTP 来实现,但是 REST 被广泛传播和使用。

在 WebSocket 中,通信发生在两端,这使其成为更快的协议。在 HTTP 中,连接是在一端建立的,这使得它比 WebSocket 有点慢。WebSocket 使用统一的 TCP 连接,需要一方终止连接。在它发生之前,连接保持活动状态。HTTP 需要为单独的请求建立不同的连接。请求完成后,连接会自动断开。

参考以及图片链接:百度安全验证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3031722.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

电视剧推荐

1、《春色寄情人》 2、《唐朝诡事录》 3、《南来北往》 4、《与凤行》 5、《利剑玫瑰》 6、《承欢记》

使用nmcli命令在Linux系统上配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! 使用nmcli命令在Linux系统上配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)https://myweb.myskillstree.cn/123.html 你是否会…

护眼台灯和普通台灯差别很大吗?专业护眼灯品牌有哪些?

随着科技的不断演进,台灯的设计也日益脱胎换骨,从曾经的笨重造型转变为如今轻盈雅致的外观。它们的功能同样经历了多样化的革新,变得更加人性化和便捷。作为学习、阅读和办公环境中不可或缺的照明工具,台灯所提供的光线舒适度至关…

ChatGLM 本地部署指南(问题解决)

硬件要求(模型推理): INT4 : RTX3090*1,显存24GB,内存32GB,系统盘200GB 如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。 模型微调硬件要求更高。…

【ArcGISProSDK】condition属性

示例 通过caption属性可以看出esri_mapping_openProjectCondition的条件是一个工程被打开 condition的作用 由此可知示例中的Tab实在工程被打开才能使用,否则他禁用显示灰色,在未禁用的时候说明条件满足。 参考文档 insertCondition 元素 (arcgis.com…

擦边宣传、质量堪忧、销量惨淡,创维汽车将何去何从?

文/张诗雨 近日,据多家媒体报道,创维汽车创始人黄宏生在公开场合发言称,创维汽车有助于养生,他在创维汽车里午休,高血压没吃药都恢复正常了。该言论引起网友热议。 针对此事件,5月9日,创维汽车…

Java数组(二)

Java数组(二) 1、多维数组 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。二维数组 int a[][] new int[2][5];解析:以上二维数组a可以看成一个两行五列的数组。…

Codeforces Round 217 (Div. 2) A. Rook, Bishop and King(BFS)

Rook, Bishop and King 题面翻译 【题目描述】 佩蒂亚正在学习国际象棋。他已经学会如何移动王、车和象。让我们提示你如何移动国象棋子。棋盘有 64 64 64个棋格,呈 8 8 8\times8 88正方形。一个格子可以用 ( r , c ) (r,c) (r,c)来表示—— r r r指行&#xff…

只需3步,使用Stable Diffusion无限生成AI数字人视频(附安装包)

基本方法 搞一张照片,搞一段语音,合成照片和语音,同时让照片中的人物动起来,特别是头、眼睛和嘴。 语音合成 语音合成的方法很多,也比较成熟了,大家可以选择自己方便的,直接录音也可以&#…

一文了解Simhash原理和用法-计算文章相似度

Simhash原理 1:背景 SimHash算法是Google在2007年发表的论文《Detecting Near-Duplicates for Web Crawling》中提到的一种指纹生成算法,被应用在Google搜索引擎网页去重的工作之中。SimHash值不但提供了原始值是否相等这一信息,还能通过该…

PCIE协议-2-事务层规范---事务描述符

2.2.6.1 概览 事务描述符是请求者和完成器之间传输事务信息的机制。事务描述符由三个字段组成: 事务ID:标识未完成的事务属性字段:定义事务的特征流量类别(TC)字段:将事务与所需的服务类型关联起来 图2-…

C语言---使用共用体将double型经纬度存储到无符号数组中

1.在上报经纬度时由于数据协议限制需要将double型数据存储到无符号数组中&#xff0c;下边是写了一个简单C程序进行验证&#xff1b; 2.代码示例如下 #include <stdio.h> typedef union {float data;unsigned char arr[4]; } my_data;int main() {my_data test_data {…

【科学研究】在朋友圈上秀恩爱——“损人利己”

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

【机器学习】 人工智能和机器学习辅助决策在空战中的未来选择

&#x1f680;传送门 &#x1f680;文章引言&#x1f512;技术层面&#x1f4d5;作战结构&#x1f308;替代决策选项&#x1f3ac;选项 1&#xff1a;超级战争&#xff08;Hyperwar&#xff09;&#x1f320;选项 2&#xff1a;超越OODA&#x1f302;选项 3&#xff1a;阻止其他…

C# OpenCvSharp Demo - 最大内接圆

C# OpenCvSharp Demo - 最大内接圆 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Windows.Forms; namespace OpenCvSh…

祝贺!触想获评第二十一届“深圳知名品牌”

5月9日&#xff0c;第八届“深圳(湾区)国际品牌周”活动盛大开幕&#xff0c;会上公布并表彰了一批具有高创新力和竞争力的品牌名单。作为工控物联领域优秀品牌代表&#xff0c;触想智能与各级政府领导、国内外品牌界权威专家、知名企业领袖和企业代表同台共庆&#xff0c;并收…

麦肯锡专访 Mistral AI CEO:三五年后的工作,要比现在更有意义

【编者按】总部位于巴黎的人工智能初创公司 Mistral AI 成立仅一年&#xff0c;就被誉为现有大模型巨头的有力挑战者。 今年 2 月&#xff0c;Mistral AI 正式发布了旗舰级大模型 Mistral Large&#xff0c;直接对标 OpenAI 的 GPT-4&#xff1b;几周前&#xff0c;Mistral AI…

TriDet: Temporal Action Detection with Relative Boundary Modeling

标题&#xff1a;TriDet&#xff1a;采用相对边界建模的时间动作检测 原文链接&#xff1a;TriDet: Temporal Action Detection With Relative Boundary Modeling (thecvf.com)https://openaccess.thecvf.com/content/CVPR2023/papers/Shi_TriDet_Temporal_Action_Detection_W…

第五章 5.2【Java类和对象】---封装和构造方法

一、单个对象内存图 二、多个对象内存图 三、多个对象指向相同 四、成员变量和局部变量 4.1 成员变量&#xff1a; 在类里面&#xff0c;方法外面的变量 4.2 局部变量&#xff1a; 在方法中的变量 4.3下面的代码来演示&#xff1a; 4.4两者的区别 五、封装 六、构造方法 6.…

专题六_模拟(3)

目录 1419. 数青蛙 解析 题解 1419. 数青蛙 1419. 数青蛙 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int minNumberOfFrogs(string croakOfFrogs) {// 44.专题六_模拟_数青蛙_Cstring t "croak";int n t.size();vector<in…