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

【WebSocket】学习总结

是一种协议;
作用与Web应用程序和服务端之间;

实时的、双向的;

通过单一的TCP提供了持久化连接;

优势:

实时、双向、可以减少网络的负载;

劣势:

需要客户端和服务端双方都支持;

连续保持连接需要占用一些内存CPU资源;

安全问题:安全性显著弱于同等配置的HTTP/REST API(因长连接的特性放大攻击面),需要组合使用WSS+Origin校验+消息认证+内容过滤

基本概念:

基于TCP协议;

客户端发送一个WebSocket连接请求,之后服务端也反馈一个协议响应以确认要求。在这个握手期间,客户端和服务端会协商好使用的协议版本、支持的子协议、支持的扩展选项等等。握手完成后,连接会保持打开的状态。支持的文件数据格式包括了二进制数据和文本数据。

特点就是实时、双向、可靠、持久。

用于在线游戏、实时聊天。

生命周期:

连接建立:客户端发送一个请求,服务端响应一个握手,然后连接就建立了;

连接开放:连接建立并且开放,客户端和服务端之间可以相互发送数据;

连接关闭:可以是被服务端或者客户端发起的一个关闭帧来关闭连接;

连接关闭完成:WebSocket的连接完全关闭。

注意:WebSocket连接在任何时候都有可能关闭,如遇网络故障、服务端崩溃。

消息格式:

文本或二进制数据;

消息构成是消息头+消息体。

性能:

双向通信性能更好:使用单一的TCP连接;

更小的网络流量:与HTTP相比,WebSocket的协议需要更少的网络流量维护连接,因为它不需要再每个请求/响应交换中发送头部信息;

更低的延迟:WebSocket协议允许服务器主动向客户端推送消息,而不需要客户端先发送消息;

更好的服务端资源管理:WebSocket可以保持持续活动的连接状态,服务端可以更好地管理客户端的连接,减少服务端的开销和处理时间。

如何优化WebSocket的性能:

减少消息的大小:WebSocket传输的数据大小对性能有很大的影响,尽可能使用二进制传输协议来代替文本传输,或者用压缩算法对消息进行压缩;

使用CDN(内容分发网络)加速:可以将静态资源缓存到离用户更近的节点上,提高传输速度和性能,CDN可以缓存WebSocket的初始握手,避免不必要的网络延迟;

使用负载均衡:通过使用负载均衡实现分配并平衡多个服务器的负载,避免单个服务器过载,同时也提高了服务的伸缩性;

优化服务端代码:WebSocket服务端代码的性能时关键因素,使用高效的框架和算法可以减少资源占用而提升速度;

避免网络阻塞:WebSocket会受到网络阻塞的影响,当有太多的数据连接同时请求时,服务器性能会下降,使用更合适的线程池和异步IO操作可以避免线程阻塞,提高WebSocket的并发性能。

本文是个人对于

万字详解,带你彻底掌握 WebSocket 用法(至尊典藏版)写的不错_websocket用法-CSDN博客

的学习总结。

http://www.lryc.cn/news/575419.html

相关文章:

  • Python 数据分析与可视化 Day 8 - Pandas 高级操作技巧
  • MFC制作动态波形图( ChartCtrl)
  • Python(一)实现一个爬取微信小程序数据的爬虫+工程化初步实践
  • 【FR801xH】Ubuntu24.04搭建富芮坤FR801xH系列开发环境教程
  • 美团京东Clean Architecture实战
  • 【算法深练】栈特性的解题密码:LIFO规则在题型中的灵活运用
  • 生僻字处理工具类
  • 价格敏感带争夺战!澳洲电商双雄增长密码,3大本土护城河尚存
  • C# 项目使用obfuscar混淆
  • 华曦达港股IPO递表,AI Home生态构建智能生活新蓝图
  • 2025 Java开发生态全景图:云原生、AI与性能优化的技术融合
  • 广州华锐互动:技术与创意双驱动的 VR 先锋​
  • 基于组件的软件开发(CBSD)与面向服务的架构(SOA)的对比分析
  • Android-Layout Inspector使用手册
  • VSCode插件开发
  • Vue3 中 toRef 与 toRefs 的深度解析与实战应用
  • Sentinel 授权规则详解与自定义异常处理
  • 【机器学习第一期(Python)】梯度提升决策树 GBDT
  • 【机器学习第二期(Python)】优化梯度提升决策树 XGBoost
  • Linux命令-Searching-locate
  • Docker compoes与私有仓库部署
  • 基于vue3+ByteMD快速搭建自己的Markdown文档编辑器
  • Midscene.js:使用 LLMs.txt 快速生成 AI 自动化测试用例「喂饭教程」
  • [Andrej Karpathy] 大型语言模型作为新型操作系统
  • 华为OD 机试 2025-黑板上色
  • 【25软考网工】第十章 网络规划与设计(2)网络规划与分析、网络结构与功能
  • 如何进行 iOS App 混淆加固?IPA 加壳与资源保护实战流程
  • 如何将视频从 iPhone 发送到 Android 设备
  • 数字孪生技术驱动UI前端变革:从静态展示到动态交互的飞跃
  • uniapp 和原生插件交互