如何更好的对WebSocket的理解?应用场景?

ops/2024/12/21 10:12:11/

WebSocket 简介

WebSocket 是一种通信协议,它提供了全双工、低延迟、持久化的网络通信。与传统的 HTTP 协议不同,WebSocket 允许客户端和服务器之间建立一个持续的连接,双方可以在这个连接上双向发送数据,而不需要每次交互时都建立新的连接。

WebSocket 协议在 HTTP 协议的基础上进行升级,客户端通过 HTTP 协议发起连接请求,并在握手成功后,协议切换为 WebSocket。此时,客户端与服务器之间就建立了一个持久的连接,可以在任何时候双向交换数据,直到连接被关闭。

WebSocket 的优势

  1. 全双工通信:传统的 HTTP 通信是单向的,而 WebSocket 支持双向通信。客户端和服务器可以随时发送消息,不需要等待对方请求。

  2. 低延迟:一旦建立连接,数据可以在客户端和服务器之间即时传输。相比于每次请求和响应都需要建立新的 HTTP 连接,WebSocket 避免了这种开销,减少了延迟。

  3. 高效的资源利用:WebSocket 使用单一的持久连接,而 HTTP 协议需要频繁的请求和响应,造成更大的资源消耗和更多的网络流量。

  4. 实时性:由于 WebSocket 是保持长连接的,它非常适合实时应用场景,如实时聊天、实时推送等。

WebSocket 的工作原理

  1. 建立连接:客户端通过 HTTP 协议发送一个 WebSocket 握手请求,服务器返回一个响应,表示升级协议为 WebSocket。
  2. 数据交换:一旦连接建立,客户端和服务器之间可以相互发送数据。
  3. 关闭连接:当一方完成数据交换时,可以发送关闭连接请求,另一方确认关闭。

WebSocket 的应用场景

  1. 实时聊天系统

    • WebSocket 是即时通讯软件的基础,通过 WebSocket,可以在用户之间快速传输消息,保持聊天内容的实时性。
  2. 实时通知和推送

    • 各种即时通知(如股市行情、天气预警、网站推送通知)可以通过 WebSocket 实现。客户端不需要定时轮询服务器,WebSocket 会即时推送更新。
  3. 在线多人游戏

    • WebSocket 能够在游戏客户端和服务器之间建立实时连接,处理玩家的输入和游戏状态的变化,保持游戏的流畅性和实时互动性。
  4. 协作编辑

    • 如 Google Docs 等在线文档编辑系统,多个用户可以同时编辑同一个文档,WebSocket 可以保证文档内容的即时同步。
  5. 金融交易平台

    • WebSocket 可以提供实时的股票报价、外汇市场数据等,确保数据的即时传递。

WebSocket 握手过程

  1. 客户端发起 WebSocket 握手请求,请求头中包含 Upgrade: websocketConnection: Upgrade,表示它希望将 HTTP 协议升级为 WebSocket 协议。

  2. 服务器如果支持 WebSocket 协议,则返回一个响应,状态码为 101,表示协议升级成功。


http://www.ppmy.cn/ops/143731.html

相关文章

专业125+总分400+南京理工大学818考研经验南理工电子信息与通信工程,真题,大纲,参考书。

考研成功上岸,苦尽甘来,专业818信号系统与数字电路125,总分400,被南理工录取,从最早信心满满,到中期犹豫不决,到后期破釜沉舟,一路颠颠簸簸,总算坚持过来了,群…

barin.js(十五)FeedForward实战教程 - 手写数字识别(MNIST 数据集)

系列文章: (一):brain.js概要介绍(二):项目集成方式(三):手把手教你配置和训练神经网络(四):利用异步训练和交叉验证来优…

功能篇:springboot实现pdf加水印,5种方案

在Spring Boot应用中实现给PDF文件加水印,可以采用以下五种方案: ### 方案一:使用iText库 iText 是一个强大的Java PDF库,可以用来创建、修改和操作PDF文档。你可以使用它来添加文本或图像形式的水印。 **步骤:** 1. …

Face to face

1.西班牙添加5G volte 首先carrierconfig里使能 <boolean name"carrier_nr_available_bool" value"true" /> <boolean name"carrier_volte_available_bool" value"true" /> 其次 组件apn配置ims参数 2.印度j…

uniapp对接unipush 1.0 ios/android

简介 实现方法 是uniapp官网推荐的 unipush-v1 文档配置具体看 uni-app官网 配置好了之后 代码实现 前端代码 前端的主要任务是监听 监听到title content 创建消息推送 安卓 可以收到在线消息并且自动弹出消息 IOS 可以监听到在线消息但是需要手动推送 以下代码app初始…

mysql的事务和存储引擎+备份

mysql的事务和存储引擎备份 一. mysql的事务1.1 mysgl支持事务四种隔离级别1.2 事务控制语句1.3 行锁和死锁1.3.1 行锁1.3.2 死锁1.3.3 如何避免死锁的发生 二. msyql的备份和还原以及日志管理2.1 数据库备份的分类2.2 备份策略2.2.1 物理冷备份&#xff08;全量&#xff09;2.…

番外篇 Git 的原理与使用

PS&#xff1a;本篇是个长篇&#xff0c;但是阅读完&#xff0c;可以基本了解 Git 在实际开发中的绝大部分常用操作。 前言&#xff1a;什么是Git 我们在日常工作 / 学习时&#xff0c;对于某些文档 / 代码&#xff0c;可能会存在多个版本需要维护&#xff0c;但是随着版本的…

Mac iOS、Android、Flutter、React Native开发环境配置

1.安装XCode https://apps.apple.com/cn/app/xcode/id497799835?mt12 2.安装Android Studio https://developer.android.google.cn/studio 3.安装brew 参考地址&#xff1a;https://www.jianshu.com/p/22122a1d4474 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunk…