返回顶部
RommHui 2水之精灵LV.1

此人很懒,什么也没有留下

  • 发帖8
  • 主题2
  • 粉丝2
  • 关注0
大家都在看
相关推荐

[其他更多] 认识websocket协议

[复制链接]

签到天数: 6 天

[LV.2]偶尔看看I

2

主题

0

好友

14

积分

水之精灵LV.1

Rank: 2Rank: 2

回帖
6
雪点
51
阅读权限
10
性别
保密
在线时间
6 小时
注册时间
2021-7-15
最后登录
2024-1-7
RommHui 显示全部楼层 发表于 2022-6-19 03:36:35 |阅读模式
本帖最后由 RommHui 于 2022-7-2 22:56 编辑

首先WebSocket是在TCP上搭建出来的,所以可以保持着一直连接的状态,除非某一方断开连接。
首先我先说说服务端和客户端(多为浏览器)一开始连接,由客户端 js 发起连接请求,HTTP 协议的请求会发出像下面例子这样的一个请求头。


但服务器收到 Upgrade 信息后,如果服务器支持。
那么服务端会读取请求头部的 Sec-WebSocket-Key 的值,并且将 Sec-WebSocket-Key 和 字符串 "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" 通过sha1 摘要算法得到 Sec-WebSocket-Accept 的值,
然后响应头状态码会是 101 Switching Protocols ,下面是一个示例响应头。


到了这里已经把发起请求然后保存连接的过程说完了。接下来就是开始说 WebSocket 协议的结构了。


FIN
大小: 1bit
意思: 当FIN值为 0 的时候代表,消息还没完整,只是其中的一个数据包;当值为 1 的时候代表这段消息已经完全发送了。
RSV 1 / 2 / 3
大小: 1bit
意思: 这个默认为 0 ,如果一定要启用,就得和服务端协商好,才具有意义。
OPCODE
大小: 4bit
意思: 该数据包类型
0 代表数据不完整,这只是其中的一个,不是最后的那个数据包。(Continuation Frame)
1 代表数据包内容的类型为 文本类型(Text Frame)
2 代表数据内容类型为 二进制类型 (Binary Frame)
8 代表连接断开 (Connection Close Frame)
9 和 10 是心跳检测,如果服务端发出 Ping Frame 那么客户端就得发回 Pong Frame ,如果服务端接受不到 Pong Frame 就代表客户端可能已经下线了。
0 - 15 中现在除了这 6 个,都为保留帧。
MASK
大小: 1bit
意思: 掩码使能
1 代表开启
0 代表关闭
Payload len
大小: 7bit(默认)
意思: 内容数据(Payload Data)的长度
Masking-key
大小: 4Byte(默认)
意思: 掩码数据,如果 Mask 为 1 就启用,否则不启用
Payload Data
大小: 0-127Byte(默认,根据Payload len的值决定长度)
意思: 存放数据的地方

PS: 如果Mask为1时,Payload Data 就需要通过 Mask 掩码加密。

0 28
分享

签到天数: 62 天

[LV.6]常住居民II

5

主题

0

好友

3456

积分

风之精灵LV.2

鬼仔性格

Rank: 13Rank: 13Rank: 13

回帖
2914
雪点
5068
阅读权限
80
性别
在线时间
111 小时
注册时间
2022-6-3
最后登录
2024-10-13
Ben仔 显示全部楼层 发表于 2022-6-19 08:11:11
你想用websocket做啲咩呀
回复 支持 反对

使用道具 举报

签到天数: 3875 天

[LV.Master]伴坛终老

42

主题

9

好友

6万

积分

精灵王☆

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

回帖
68118
雪点
9354
阅读权限
130
在线时间
6404 小时
注册时间
2013-3-22
最后登录
2025-1-19
神之影 显示全部楼层 发表于 2022-6-19 09:58:25
高深嘅技术
回复 支持 反对

使用道具 举报

签到天数: 3570 天

[LV.Master]伴坛终老

12

主题

0

好友

3万

积分

精灵王☆

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

回帖
34230
雪点
49133
阅读权限
130
在线时间
1267 小时
注册时间
2012-10-28
最后登录
2025-1-16
asd2008asd 显示全部楼层 发表于 2022-6-19 13:27:41
多谢分享websocket协议
回复 支持 反对

使用道具 举报

签到天数: 630 天

[LV.9]以坛为家II

18

主题

0

好友

4万

积分

精灵王☆

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

回帖
44256
雪点
36494
阅读权限
130
性别
保密
在线时间
1328 小时
注册时间
2022-2-16
最后登录
2025-1-19
粤难搵 显示全部楼层 发表于 2022-6-19 15:54:53
冇咁既知识睇唔明
回复 支持 反对

使用道具 举报

签到天数: 336 天

[LV.8]以坛为家I

4

主题

0

好友

740

积分

土之精灵LV.2

Rank: 6Rank: 6

回帖
526
雪点
1776
阅读权限
50
在线时间
226 小时
注册时间
2022-3-11
最后登录
2024-8-27
tyusik 显示全部楼层 发表于 2022-6-19 16:10:58
長知識 了 多謝你的分享
回复 支持 反对

使用道具 举报

签到天数: 1025 天

[LV.10]以坛为家III

2

主题

5

好友

1万

积分

炎之精灵LV.2

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

回帖
14576
雪点
43155
阅读权限
110
性别
在线时间
804 小时
注册时间
2021-12-13
最后登录
2025-1-19
skydran 显示全部楼层 发表于 2022-6-19 22:32:48
看不懂但是感觉有用
回复 支持 反对

使用道具 举报

签到天数: 383 天

[LV.9]以坛为家II

0

主题

1

好友

3319

积分

风之精灵LV.2

Rank: 13Rank: 13Rank: 13

回帖
2356
雪点
9593
阅读权限
80
性别
保密
在线时间
387 小时
注册时间
2022-4-21
最后登录
2025-1-13
生化之父 显示全部楼层 发表于 2022-6-19 23:24:06
好深奥,睇唔明白……
回复 支持 反对

使用道具 举报

签到天数: 6 天

[LV.2]偶尔看看I

2

主题

0

好友

14

积分

水之精灵LV.1

Rank: 2Rank: 2

回帖
6
雪点
51
阅读权限
10
性别
保密
在线时间
6 小时
注册时间
2021-7-15
最后登录
2024-1-7
RommHui 显示全部楼层 发表于 2022-6-20 02:28:58
Ben仔 发表于 2022-6-19 08:11
你想用websocket做啲咩呀

现在web端写客服类的即时通讯都采用websocket
回复 支持 反对

使用道具 举报

签到天数: 62 天

[LV.6]常住居民II

5

主题

0

好友

3456

积分

风之精灵LV.2

鬼仔性格

Rank: 13Rank: 13Rank: 13

回帖
2914
雪点
5068
阅读权限
80
性别
在线时间
111 小时
注册时间
2022-6-3
最后登录
2024-10-13
Ben仔 显示全部楼层 发表于 2022-6-20 08:04:04
RommHui 发表于 2022-6-20 02:28
现在web端写客服类的即时通讯都采用websocket

好似好高級喎
回复 支持 反对

使用道具 举报

回帖须知:严禁发表粗言秽语、纯表情、纯数字等无意义内容,更多规则请参阅论坛总版规
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

粤梦缘是国内粤语爱好者社区,集动漫、影视、音乐的综合性分享及交流平台。 网站共设,动漫资讯、动漫分享、漫画分享、讨论等多个频道。
  • 官方手机版

  • 官方QQ群

  • 商务合作

  • Powered by Discuz! X3.4 | Copyright © 2001-2023, Tencent Cloud. | 粤梦缘
  • | 营业执照 |粤梦缘网络有限公司|鲁ICP备19001237号-21|鲁公网安备 4236902302000354号