账户余额
高防服务器
香港高防服务器
美国高防服务器
国内高防服务器
安全服务
服务器代维
网站安全代维
全面安全防护
柚子云科技,专业的高防体系服务商
可信赖的企业云安全防护合作伙伴
websocket是什么?
websocket是一种浏览器与服务器进行全双工通信的网络技术,属于 应用层协议。它 基于TCP传输协议,并 复用HTTP 的握手通道,用来弥补HTTP协议在持久通信能力上的不足。
ws 默认端口:80
wss 默认端口:443
Websocket 通过HTTP协议握手。
websocket的特点有哪些?
节省资源开销,HTTP请求每次都要携带完整的头部,此项开销显著减少了;
更强的实时性,由于协议是全双工通信,所以服务器可以主动给客户端推送数据,相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少;
保持连接状态,能够记录用户状态,通信时可以省略部分状态信息,不像HTTP每次都需要携带用户认证信息;
更好的二进制支持,Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。
websocket如何建立连接?
websocket 通过 HTTP 请求建立握手,状态码为 101(协议升级)
客户端:申请协议升级
客户端先发起协议升级请求,采用的是HTTP数据格式,且只支持GET方法
GET / HTTP/1.1
Host: localhost:8080
Origin: http://127.0.0.1:3000
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: w4v7O6xFTi36lq3RNcgctw==
重点请求首部意义如下:
Connection: Upgrade:表示升级协议
Upgrade: websocket:表示升级到websocket协议。
Sec-WebSocket-Version: 13:表示websocket的版本。如果服务端不支持该版本,需要返回一个Sec-WebSocket-Versionheader,里面包含服务端支持的版本号。
Sec-WebSocket-Key:与后面服务端响应首部的Sec-WebSocket-Accept是配套的,提供基本的防护,比如恶意的连接,或者无意的连接。
注意,上面省略了非重点请求首部
服务器:响应协议升级
服务端返回内容如下,状态代码101表示协议切换。到此完成协议升级,后续的数据交互都按照新的协议来。
HTTP/1.1 101 Switching Protocols
Connection:Upgrade
Sec-WebSocket-Accept: Oy4NRAQ13jhfONC7bP8dTKb4PTU=
websocket心跳机制是什么?
WebSocket为了保持客户端与服务端的实时双向通信,需要确保客户端与服务端之间的TCP通道保持连接没有断开。然而,对于长时间没有数据往来的连接,如果依旧长时间保持着,可能会浪费包括的连接资源。
但不排除有些场景,客户端、服务端虽然长时间没有数据往来,但仍需要保持连接。这个时候,可以采用心跳来实现。
sender - > receiver:ping
receiver - > sender:pong
ping、pong的操作,对应的是WebSocket的两个控制帧,opcode分别是0x9、0xA。
websocket应用场景有哪些?
即时通信
直播
游戏
在线协同工具(例如语雀笔记、腾讯文档等)
实时数据拉取和推送
地图
(凡是需要数据实时传输的一般都会使用到websocket)
websocket与http的区别
相同点:
都是基于TCP协议进行数据传输
都属于应用层协议
不同点:
websocket是双向通信协议,而HTTP是单向通信
websocket是有状态的,而HTTP是无状态的
联系点:
websocket在建立握手时,数据是通过HTTP协议传输的(HTTP只进行了握手动作),
但是握手之后,单独建立了一条TCP通信通道,之后数据都是基于TCP协议直接传输,不需要HTTP协议了。
websocket与socket的区别
可以理解为张三和张三丰的关系
Socket 是传输控制层的接口,用户可以通过 Socket 来操作底层 TCP/IP 协议簇通信。
WebSocket 是一个完整的应用层协议。
Socket 更灵活,WebSocket 更易用。
两者都能做即时通讯
Jmeter编写的websocket脚本
websockt 脚本.jmx
YKID.csv
©Copyright © 2022 YOUZIYUN.COM. All Rights Reserved. 柚子雲版权所有 柚子雲網絡科技有限公司