websocket 浏览器端 一次 最多可以接受多少字节不报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了websocket 浏览器端 一次 最多可以接受多少字节不报错相关的知识,希望对你有一定的参考价值。

参考技术A websocket 底层是 TCP 协议,它是基于流的协议,那也就是说,一方可以不断发送,另外一方可以无限接收。
因此几个 G 的电影,照样可以在线观看。
只要理解 TCP 协议就清楚了,而 Http 协议是在 TCP 协议之上的应用层协议。
综上,websocket 可以无限制接受任意字节数
参考技术B 是分片长度太大了。改小就可以发了。 WebSocket protocol 是html5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。

websocket 11

1. websocket
回顾:
- 什么是轮训?
- 通过定时器让程序每隔n秒执行一次操作。
- 什么是长轮训?
- 浏览器向后端发起请求,后端会将请求 hang 住,最多hang 30s。
如果一直不返回数据:则最多等待30s,紧接着用户立即再发送请求。
如果有数据返回:则操作数据并立即再发送请求。
PS:后台可以使用队列或redis的列表来hang主请求。

- 轮训和长轮训目的?
由于Http请求是无状态、短连接所以服务端无法向客户端实时推送消息,
所以,我们就是可以使用:轮训和长轮训去服务端获取实时数据。

作业:基于redis和长轮询实现投票。

websocket是一套类似于http的协议。
扩展:
http协议:\r\n分割、请求头和请求体\r\n分割、无状态、短连接。
websocket协议:\r\n分割、创建连接后不断开、 验证+数据加密;

websocket本质:
- 就是一个创建连接后不断开的socket
- 当连接成功之后:
- 客户端(浏览器)会自动向服务端发送消息,包含: Sec-WebSocket-Key: iyRe1KMHi4S4QXzcoboMmw==
- 服务端接收之后,会对于该数据进行加密:
base64(sha1(swk + magic_string))

- 构造响应头:
HTTP/1.1 101 Switching Protocols\r\n
Upgrade:websocket\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Accept: 加密后的值\r\n
WebSocket-Location: ws://127.0.0.1:8002\r\n\r\n

- 发给客户端(浏览器)
- 建立:双工通道,接下来就可以进行收发数据
- 发送的数据是加密,解密,根据payload_len的值进行处理:
- payload_len <=125
- payload_len ==126
- payload_len ==127
- 获取内容:
- mask_key
- 数据
根据mask_key和数据进行位运算,就可以把值解析出来。

面试:
a. 什么是websocket?
websocket是给浏览器新建一套协议。协议规定:浏览器和服务端连接之后不断开,以此可以完成:服务端向客户端主动推送消息。
websocket协议额外做的一些前天操作:
- 握手,连接前进行校验
- 发送数据加密

b. websocket本质
- socket
- 握手,魔法字符串+加密
- 加密,payload_len=127/126/<=125 -> mask key
























































以上是关于websocket 浏览器端 一次 最多可以接受多少字节不报错的主要内容,如果未能解决你的问题,请参考以下文章

2020-06-18 面试:netty最多可以支持多少个websocket 长连接

flask总结之websocket源码剖析

服务端向客户端推送消息:轮询,长轮询(兼容性好),以及websocket(主流浏览器都支持)

Springboot +WebSocket学习

使用WebSocket构建实时聊天

Tomcat如何实现WebSocket