IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【WebSocket】协议详解 -> 正文阅读

[网络协议]【WebSocket】协议详解

目录

简介

一、WebSocket是什么?

二、使用WebSocket

1.WebSocket工作原理

? ? ? ? 1.1 握手(建立连接)

? ? ? ? 1.2 数据传输

2.WebSocket

? ? ? ? 2.1 事件

? ? ? ? 2.2 方法

? ? ? ? 2.3 属性?

3.WebSocket优点

4.WebSocket的使用场景


简介

? ? ? ? websocket是html5提供的一种浏览器与服务器进行全面双工通讯的网络技术,是基于TCP传输的应用层协议


一、WebSocket是什么?

????????WebSocket?是一种网络通信协议。RFC6455?定义了它的通信标准。

????????http是一种无状态,无连接,单向的应用层协议,它采用了请求/响应模型,通信请求只能由客户端发起,服务端对请求做出应答处理。这样的弊端显然是很大的,只要服务端状态连续变化,客户端就必须实时响应,都是通过javascript与ajax进行轮询,这样显然是非常麻烦的,同时轮询的效率低,非常的浪费资源(http一直打开,一直重复的连接)。

? ? ? ? 于是就有了websocket,它是一种全面双工通讯的网络技术,任意一方都可以建立连接将数据推向另一方,websocket只需要建立一次连接,就可以一直保持

二、使用WebSocket

1.WebSocket工作原理

? ? ? ? 1.1 握手(建立连接)

? ? ? ? ? ? ? ? web浏览器和服务器都必须使用websocket来建立维护连接,也可以理解为HTTP握手?(handshake)和TCP数据传输

  1. 浏览器向http一样发起一个请求,等待服务器响应
  2. 服务器返回握手响应,告诉浏览器将后续的数据按照websocket的制定格式传输过来
  3. 服务器接收到了之后,服务器与浏览器之间连接不中断,此时连接已经是双工的了
  4. 浏览器和服务器由任何需要传输的数据时使用长连接来进行数据传递;

????????这里说它是HTTP握手,是因为浏览器和服务器在建立长连接的握手过程是按照HTTP1.1的协议发送的,有Request,Request Header, Response, Response Header。但是不同的Header里面的字段是有特定含义的。

????????说它是TCP传输,主要体现在建立长连接后,浏览器是可以给服务器发送数据,服务器也可以给浏览器发送请求的。当然它的数据格式并不是自己定义的,是在要传输的数据外层有ws协议规定的外层包的。

? ? ? ? 1.2 数据传输

????????????????一旦WebSocket客户端、服务端建立连接后,后续的操作都是基于数据帧的传递。这样做有几个好处:

? ? ? ? ? ? ? ? ? ? ?1.数据可以进行分片传输,每条消息可能被切分成多个数据帧,这样就不用考虑数据大小导致的长度标志位不足够的情况。

? ? ? ? ? ? ? ? ps :FIN=1表示当前数据帧为消息的最后一个数据帧,此时接收方已经收到完整的消息,可以对消息进行处理。FIN=0,则接收方还需要继续监听接收其余的数据帧;? ? ? ??

? ? ? ? ? ? ? ? ? ? ?2. 和http的chunk一样,可以边生成数据边传递消息,即提高传输效率;

2.WebSocket

? ? ? ? 2.1 事件

? ? ? ? ***@ServerEndpoint这个注解用来标记一个类是 WebSocket 的处理器。

  1. Open(@onOpen):服务器响应websocket的请求会触发
  2. Open(@onMessage):当消息被接收时会触发
  3. Close(@onClose):当连接关闭时会触发,关闭之后,服务端和客户端就不能发消息了
  4. Error(@onError):发生错误会触发,并会告诉你错误的原因

? ? ? ? 2.2 方法

  1. send():一旦服务器与客户端建立连接(open)之后,就可以使用其发送消息了,发送的消息都是二进制格式的
  2. close():?关闭连接

? ? ? ? 2.3 属性?

  1. readyState:WebSocket通过readyState(只读)来传达连接状态,它会随着连接状态的改变而改变,由四个值来表示:

? ? ? ? ? ? ? ? WebSocket.CONNECTING = 0 :连接正在进行

????????????????WebSocket.OPEN = 1 :连接已经建立

????????????????WebSocket.CLOSING = 2 :连接正在进行关闭握手

????????????????WebSocket.CLOSED = 3 :连接已经关闭

?????2.bufferedAmount:用于检查已经进入队列但还未传输的数据大小

?????3.Protocol:Protocol让服务到知道客户端使用WebSocket的协议,两者使用的协议不同的话,整个属性都是空的。

3.WebSocket优点

????????1.减少请求费时费资源:是真正的全双工方式,建立连接后,服务器与客户端时完全对等的,可以相互请求,减少了不必要的网络请求时间损耗和网络流量;

????????2.更持久:websocket协议通过第一个request建立TCP连接后,只要不主动关闭,就能一直保持连接状态交换数据;

????????3.服务端可以主动向客户端发送消息;

4.WebSocket的使用场景

????????websocket的使用场景: 社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、体育实况更新、视频会议/聊天、基于位置的应用、在线教育、智能家居等 需要高实时的场景。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:57:20  更:2022-07-17 16:59:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 12:20:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码