WebSocket--技术文档--基本概念--《快速了解WebSocket协议》

阿丹:

             不断学习新技术,丰富自己了解更多才能扩展更多世界可能。 

官网

WebSocket首页、文档和下载 - HTML5开发相关 - OSCHINA - 中文开源技术交流社区

软件简介

WebSocket 是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。 WebSocket 通信协议于 2011 年被 IETF 定为标准 RFC 6455,WebSocketAPI 被 W3C 定为标准。

 

现在,很多网站为了实现即时通讯 (real-time),所用的技术都是轮询 (polling)。轮询是在特定的的时间间隔 (time interval)(如每 1 秒),由浏览器对服务器发出 HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的 HTTP request d 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求 (request),然而 HTTP request 的 header 是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。

而最比较新的技术去做轮询的效果是 Comet – 用了 AJAX。但这种技术虽然可达到全双工通信,但依然需要发出请求 (reuqest)。

在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此 WebSocket 协议中,为我们实现即使服务带来了两大好处:

1. Header

互相沟通的 Header 是很小的 - 大概只有 2 Bytes

2. Server Push

服务器可以主动传送数据给客户端

阿丹解读:

        WebSocket是基于HTTP协议的升级。WebSocket协议的底层原理是基于HTTP协议的,但是它不同于HTTP协议,因为它允许服务器主动向客户端发送数据。WebSocket协议的底层原理是通过HTTP协议的升级来实现的。当客户端向服务器发送一个WebSocket请求时,服务器会返回一个HTTP 101状态码,表示协议已经升级。在升级之后,客户端和服务器之间的通信就不再是基于HTTP协议了,而是基于WebSocket协议。就是不在需要我们自己前台去通过定时器等等去后台进行获取了,而是通过这个协议类似于发布订阅模式来进行的。

WebSocket协议的使用场景

WebSocket协议通常应用于需要实时通信的场景,包括但不限于:

  1. 社交聊天:WebSocket可以用于实现实时聊天应用,比如在网页版的聊天应用中,WebSocket可以用于建立持久连接,发送和接收消息。
  2. 弹幕系统:在视频网站或直播平台上,用户可以发送弹幕。使用WebSocket,可以实时将这些弹幕发送到所有人。
  3. 多玩家游戏:WebSocket可以用于实现实时多人在线游戏。通过WebSocket,服务器可以实时将游戏状态推送到客户端,从而实现游戏的同步。
  4. 协同编辑:当多个用户在同一文档上工作时,使用WebSocket可以实时同步每个人的编辑操作,从而避免版本冲突。
  5. 股票基金实时报价:金融界的数据变化非常快,使用WebSocket可以实时将最新数据推送到客户端。
  6. 体育实况更新:对于正在进行的体育比赛,实时更新比分和比赛状态是非常重要的。使用WebSocket可以实现这一功能。
  7. 视频会议/聊天:WebSocket可以用于实现视频会议或聊天应用,使得分布在世界各地的人可以在同一平台上进行实时交流。
  8. 智能家居:通过WebSocket,智能家居设备可以实时与云端服务器通信,从而进行设备的控制和状态监测。

这些场景的共同特点是都需要实时、双向的通信,而WebSocket协议正好满足这一需求。

WebSocket协议同类型协议

除了WebSocket协议之外,还有其他的实时通信协议,例如:

  1. HTTP/2 Server Push:HTTP/2协议中引入了一种新技术,即服务器推送(Server Push)。通过这种技术,服务器可以在客户端还没有请求资源之前,主动将资源推送给客户端。这可以减少页面加载时间,提高网页的响应速度。
  2. WebSockets over QUIC:QUIC是一种基于UDP的传输协议,它提供了比TCP更快的数据传输速度。WebSockets over QUIC是一种基于QUIC的WebSocket协议实现。由于QUIC是基于UDP的,因此它可以避免TCP的一些问题,例如TCP的慢启动和拥塞控制等。
  3. HTTP/3:HTTP/3是基于QUIC的下一代HTTP协议版本。它提供了比HTTP/2更高的性能和更好的安全性。

WebSocket协议同类型协议对比(用于技术选型)

WebSocket协议是一种实时通信协议,它与其他实时通信协议相比,具有以下特点和区别:

  1. WebSocket协议:WebSocket是一种全双工通信协议,允许服务器主动向客户端发送数据。它基于TCP协议,但需要在HTTP协议的基础上进行第一次握手。一旦握手成功,数据就可以在单一的TCP连接上进行双向传输。WebSocket的URL格式形如:ws://localhost:80/、wss://localhost:443/。其中,“ws”代表WebSocket,“wss”代表WebSocket Secure,也就是通过TLS或SSL加密的WebSocket。
  2. HTTP/2 Server Push:HTTP/2 Server Push是HTTP/2协议引入的一种新技术,允许服务器在没有收到客户端请求之前,主动将资源推送给客户端。这可以减少页面加载时间,提高网页的响应速度。
  3. WebSockets over QUIC:WebSockets over QUIC是一种基于QUIC的WebSocket协议实现。QUIC是一种基于UDP的传输协议,它提供了比TCP更快的数据传输速度。由于QUIC是基于UDP的,因此它可以避免TCP的一些问题,例如TCP的慢启动和拥塞控制等。
  4. HTTP/3:HTTP/3是基于QUIC的下一代HTTP协议版本。它提供了比HTTP/2更高的性能和更好的安全性。
  5. MQTT:MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布-订阅模式的消息传输协议。MQTT协议主要用于物联网设备之间的通信,具有低带宽、低能耗、可靠性高、支持异步通信等特点。

总体来说,WebSocket协议与其他实时通信协议相比,具有以下区别:

  1. WebSocket协议是一种应用层协议,而HTTP、MQTT等协议主要应用于传输层或应用层。
  2. WebSocket协议可以建立持久连接,实现双向通信,而HTTP等协议通常只能实现单向通信。
  3. WebSocket协议的数据报文较小,包头非常小,而HTTP等协议的数据报文通常较大,包头也较大。
  4. WebSocket协议适用于实时交互场景,例如游戏、聊天等,而HTTP等协议适用于请求-响应场景,例如网页浏览、下载等操作。
  5. MQTT协议适用于物联网设备之间的通信,具有低带宽、低能耗等特点。

在选择实时通信协议时,需要根据具体的应用场景和需求来选择最合适的协议。

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

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

相关文章

android:新建工程文件介绍

一、前言当我们新建一个app时会呈现出固定的工程文件,这篇文章介绍新建工程里的文件。 二、介绍 Structure:就是你选择哪个页面就会显示那个页面的结构,就比如说我选择的是MainActivity他就会显示这个页面所使用的方法。 1-2:是android自动生…

什么是架构,架构的本质是什么

不论是开发人员还是架构师,我们都一直在跟软件系统打交道,架构是在工作中出现最频繁的术语之一。那么,到底什么是架构?你可能有自己的答案,也有可能没有答案。对“架构”的理解需要我们不断在实践中思考、归纳、演绎&a…

【ES6】require、export和import的用法

在JavaScript中,require、export和import是Node.js的模块系统中的关键字,用于处理模块间的依赖关系。 1、require:这是Node.js中引入模块的方法。当你需要使用其他模块提供的功能时,可以使用require关键字来引入该模块。例如&…

查询优化器内核剖析之从一个实例看执行计划

学习查询优化器不是我们的目的,而是通过 它,我们掌握 SQL Server 是如何处理我们的 SQL 的,掌握执行计划,掌握为什么产生 I/O 问题, 为什么 CPU 使用老高,为什么你的索引加了不起作用... 如果,…

3DCAT携手华为,打造XR虚拟仿真实训实时云渲染解决方案

2023年5月8日-9日,以 因聚而生 众志有为 为主题的 华为中国合作伙伴大会2023 在深圳国际会展中心隆重举行。本次大会汇聚了ICT产业界的广大新老伙伴朋友,共同探讨数字化转型的新机遇,共享数字化未来的新成果。 华为中国合作伙伴大会2023现场&…

安装ArcGis时需要安装Micsoft.Net Framework 3.5 sp1

在安转ArcGis时遇到一个问题,解决方法如下 下载.Net 按照他的说明 将地址复制到迅雷中下载,并安装 就可以了 安装就可以了

【数据结构-队列】队列介绍

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

cms系统稳定性压力测试出现TPS抖动和毛刺的性能bug【杭州多测师_王sir】

一、并发线程数100,分10个阶梯,60秒加载时间,运行1小时进行压测,到10分钟就出现如下 二、通过jstat -gcutil 16689 1000进行监控

49、IDEA 创建类或方法时,实现按格式化 ctrl + alt + l 能变成左花括号在下一行,与右花括号对齐

IDEA 创建类或方法时,左花括号是改成在下一行,与右花括号对齐 默认花括号是这样的 现在想改成这样的 实现按格式化 ctrl alt l 能变成这样 在这里修改就行 把 end of line 改成 next line

学习高级数据结构:探索平衡树与图的高级算法

文章目录 1. 平衡树:维护数据的平衡与高效性1.1 AVL 树:严格的平衡1.2 红黑树:近似平衡 2. 图的高级算法:建模复杂关系与优化2.1 最小生成树:寻找最优连接方式2.2 拓扑排序:解决依赖关系 拓展思考 &#x1…

任意文件读取和漏洞复现

任意文件读取 1. 概述 一些网站的需求,可能会提供文件查看与下载的功能。如果对用户查看或下载的文件没有限制或者限制绕过,就可以查看或下载任意文件。这些文件可以是漂代码文件,配置文件,敏感文件等等。 任意文件读取会造成&…

生信分析Python实战练习 5 | 视频23

开源生信 Python教程 生信专用简明 Python 文字和视频教程 源码在:https://github.com/Tong-Chen/Bioinfo_course_python 目录 背景介绍 编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法 数…

IP对讲终端SV-6005带一路2×15W或1*30W立体声做广播使用

IP对讲终端SV-6005双按键是一款采用了ARMDSP架构,接收网络音频流,实时解码播放;配置了麦克风输入和扬声器输出,SV-6005带两路寻呼按键,可实现对讲、广播等功能,作为网络数字广播的播放终端,主要…

计算机视觉-YOYO-

目录 计算机视觉-YOYO 目标检测发展历程 区域卷积神经网络(R-CNN) Fast R-CNN Mask R-CNN模型 比如SSD、YOLO(1, 2, 3)、R-FCN 目标检测基础概念 边界框、锚框和交并比 边界框(bounding box) 锚框(Anchor box) 交并比 …

【传输层】TCP -- 三次握手四次挥手 | 可靠性与提高性能策略

超时重传机制连接管理机制三次握手四次挥手滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP应用层协议理解 listen 的第二个参数 超时重传机制 主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B&#xff1…

IDEA使用Docker插件

修改Docker配置 1.执行命令vim /usr/lib/systemd/system/docker.service,在ExecStart配置的后面追加 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:…

如何开立香港银行账户?

作为国际金融中xin,香港拥有众多世界知名的银行机构,提供了丰富的金融服务和产品。那么,开立香港银行账户需要哪些资料?具体流程和时间又是怎样的呢? 一、所需资料 开立香港银行账户所需的基本资料如下: …

国标GB28181视频平台EasyGBS国标平台智能边缘计算网关关于小区电动车进电梯的应用方案设计

一、行业背景 随着人工智能技术的不断成熟与落地,各行各业也逐渐融入AI智能检测技术,尤其是在视频监控领域,通过AI视频智能检测与分析,可以大大提高视频的自动化、智能化监控能力。比如在小区的管理中,由电动车上楼入…

大数据、AI和云原生:引领未来软件开发的技术演进

文章目录 **1. 数据驱动的创新:****2. 智能化应用的兴起:****3. 云原生的敏捷和可扩展性:****4. 实时性和即时性:****5. 数据隐私和安全:****6. 跨平台和跨设备:****7. 自动化和智能编程:****8.…

化繁为简,使用Hibernate Validator实现参数校验(一)

目录 前言 环境配置 导入依赖 基础校验 校验注解 参数绑定 PathVariable RequestParam RequestBody Validated Valid 单参校验 对象校验 分组校验 顺序校验 前言 在之前的悦享校园的开发中使用了SSM框架,由于当时并没有使用参数参数校验工具&#xf…