WebSocket是什么

简介: 【4月更文挑战第27天】WebSocket,即Web浏览器与Web服务器之间全双工通信标准。

利用Ajax和Comet技术进行通信可以提升Web的浏览速度。但问题在于通信若使用HTTP协议,就无法彻底解决瓶颈问题。WebSocket网络技术正是为解决这些问题而实现的一套新协议及API。


WebSocket,即Web浏览器与Web服务器之间全双工通信标准。其中,WebSocket协议由IETF定为标准,WebSocket API由W3C定为标准。


一旦Web服务器与客户端之间建立起WebSocket协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、XML、HTML或图片等任意格式的数据。


由于是建立在HTTP基础上的协议,因此连接的发起方仍是客户端,而一旦确立WebSocket通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文。

WebSocket协议的主要特点:

  • 推送功能:支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
  • 减少通信量:只要建立起WebSocket连接,就希望一直保持连接状态。和HTTP相比,不但每次连接时的总开销减少,而且由于WebSocket的首部信息很小,通信量也相应减少了。


为了实现WebSocket通信,在HTTP连接建立之后,需要完成一次“握手”(Handshaking)的步骤。

  1. 握手·请求

为了实现WebSocket通信,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。

Sec-WebSocket-Key字段内记录着握手过程中必不可少的键值。Sec-WebSocket-Protocol字段内记录使用的子协议。

子协议按WebSocket协议标准在连接分开使用时,定义那些连接的名称。

  1. 握手·响应

对于之前的请求,返回状态码101 Switching Protocols的响应。Sec-WebSocket-Accept的字段值是由握手请求中的Sec-WebSocket-Key的字段值生成的。成功握手确立WebSocket连接之后,通信时不再使用HTTP的数据帧,而采用WebSocket独立的数据帧。

  1. WebSocket API

JavaScript可调用“The WebSocket API”(http://www.w3.org/TR/websockets/,由W3C标准制定)内提供的WebSocket程序接口,以实现WebSocket协议下全双工通信。

相关文章
|
缓存 开发者 CDN
CDN 刷新功能| 学习笔记
快速学习 CDN 刷新功能。
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
469 0
|
3月前
|
Kubernetes Devops API
从零到面试高手:每个 DevOps 专业人士都必须知道的 20 个 Kubernetes 架构问答
Kubernetes 是当前 DevOps、云原生和 SRE 领域的关键技能。本文总结了 20 个高频面试问题,涵盖架构组件、工作原理及核心概念,助你轻松掌握 Kubernetes 基础,提升面试与实战能力。
267 2
|
9月前
|
JSON 监控 物联网
#WebSocket 调试全攻略:Postman、Apipost和Apifox核心解析、工具选择与对比!
WebSocket 是一种现代化的全双工通信协议,允许客户端和服务端通过持久连接实时双向传输数据。它适用于即时通讯、实时通知、金融行情、在线协作、物联网等场景。调试 WebSocket 时,工具应具备握手管理、实时消息收发、自定义 Header、消息大小监控、分组管理、多连接支持等功能。
812 1
|
11月前
|
JavaScript
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
1978 27
|
Linux Shell
28. 【Linux教程】删除环境变量
28. 【Linux教程】删除环境变量
627 0
|
移动开发 网络协议 网络安全
详解 WebSocket
详解 WebSocket
752 0
|
缓存 前端开发 JavaScript
优化前端性能的10个实用技巧
提高网站或应用程序的性能是前端开发中至关重要的一部分。本文将介绍10个实用的技巧,帮助前端开发人员优化其项目的性能,包括减少HTTP请求、使用CDN加速、压缩和合并文件、优化图片等方面的技术手段,以提升用户体验和网站加载速度。
|
机器学习/深度学习 自然语言处理
掩码语言模型(MLM)
掩码语言模型(MLM)

热门文章

最新文章