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://www.hqwc.cn/news/687905.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ansible——INVENTORY主机清单

一、Inventory主机清单 Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内 二、Inventory主机清单部署 2.1 前期准备 systemctl stop firewalld setenforce 0 yum install epel-release -y yum install…

nacos server安装部署傻瓜级教程

下载地址:GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.an easy-to-use dynamic service discovery, configuration and service management platfo…

淘宝电商商家ERP订单接口接入指南:对接ERP与淘宝系统的数据桥梁

最近几年,电商发展如火如荼,一方面互联网企业在推互联网 和O2O,同时很多传统企业也在积极互联网,通过各种电商平台拓展销售渠道,有些还同时建有自建的电商平台。这些电商平台通常下单,结算,促销…

stm32开发三、GPIO

部分引脚可容忍5V,容忍5V的意思是:可以在这个端口输入5V的电压,也认为是高电平 但是对于输出而言,最大就只能输出3.3V,因为供电就只有3.3V 具体哪些端口能容忍5V,可以参考一下STM32的引脚定义 不带FT的,就只…

显影不干净如何解决?

知识星球(星球名:芯片制造与封测社区,星球号:63559049)里的学员问:光刻工序完成后,晶圆表面有部分图形容易出现显影不净是什么原因?有什么好的解决办法吗? 光刻工序流程 …

安卓模拟器Frida环境搭建 (mumu+adb+frida)

安卓模拟器Frida环境搭建 (mumuadbfrida) mumu模拟器安装adb与frida下载mumuadbfrida配置一般的报错实战 针对apk抓包问题,有的时候Android9已经不适用于现在的需求,需要更高的Android版本,mumu模拟器提供了Android12的…

镓未来助力联想笔记本GaN适配器标配化,赋能高效用户体验

镓未来赋能笔记本电脑GaN适配器标配化 据悉,Lenovo 2024年推出搭配的多款新型笔记本原装适配器电源ADL100UDGC3A,采用了镓未来集成型Cascode技术氮化镓功率器件G1N65R150PB。新款方案相较上一代工艺,体积减小23%,重量降低18%&…

H3C DHCP快速配置指南

1 配置DHCP服务器动态分配IPv4地址 1.1 简介 本案例介绍配置接口工作在DHCP服务器模式,实现动态分配IPv4地址的方法。 1.2 组网需求 如1.2 图1所示,公司将交换机做为核心交换机,现在需要在核心交换机上划分3个VLAN网段,Ho…

Elasticsearch入门基础和集群部署

Elasticsearch入门基础和集群部署 简介基础概念索引(Index)类型(Type)(逐步弃用)文档(Document)字段(Field)映射(Mapping)分片&#x…

队列的实现(使用C语言)

完整代码链接:DataStructure: 基本数据结构的实现。 (gitee.com) 目录 一、队列的概念: 二、队列的实现: 使用链表实现队列: 1.结构体设计: 2.初始化: 3.销毁: 4.入队: 5.…

【数据结构】顺序表专题详解(带图解析)

最好的时光,在路上;最好的生活,在别处。独自上路去看看这个世界,你终将与最好的自己相遇。💓💓💓 目录 •🌙说在前面 🍋知识点一:什么是数据结构 • 🌰1.什…

【MySQL】SQL基本知识点DDL(1)

目录 1.SQL分类: 2.DDL-数据库操作 3.DDL-表操作-创建 4.DDL-表操作-查询 5.DDL-表操作-数据类型 6.DDL-表操作-修改 1.SQL分类: 2.DDL-数据库操作 3.DDL-表操作-创建 注意:里面的符号全部要切换为英文状态 4.DDL-表操作-查询 5.DDL…