长链接概念

websocket 基础理解

webSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。WebSocket协议在2011年由IETF标准化为RFC 6455,后由RFC 7936补充规范。Web IDL中的WebSocket API由W3C标准化。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。

通过上述对websocket的定义,我们知道如下几个关于websocket特点:

websocket 是一种网络传输协议
websocket 是基于tcp 协议的
websocket 是全双工的 (客户端和服务端都可以主动通信)
websocket 是持久性连接
补充关于websocket 的特点 :

大部分编程语言都能实现websocket服务端和客户端
websocket 协议得到了当前绝大部分浏览器的支持(web浏览器作为websocket的客户端)
与http协议兼容,默认的工作端口是 80(http) 和 443(https)
websocket 是一个应用层协议 , 但是websocket必须依赖HTTP协议进行第一次握手 , 握手成功之后数据直接从TCP通道传输 , 此时就和HTTP无关了
 

General
Request URL: ws://127.0.0.1/echo
Request Method: GET
Status Code: 101 Switching Protocols

Response Headers
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: c/LP8JsVmZWV/EB3lgGDVmVQWVA=

Request Headers
GET ws://127.0.0.1/echo HTTP/1.1
Host: 127.0.0.1
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
Upgrade: websocket
Origin: http://127.0.0.1:5500
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Sec-WebSocket-Key: rRXp2i/XCuCsKqs5MN12Ag==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

解释 :

101 Switching Protocols : 101状态码是switching protocols,表示服务器已经理解了客户端的请求,并将通过Upgrade子段通知客户端采用WebSocket协议来完成这个请求

Connection: Upgrade 的值必须是 upgrade 表示请求升级

Upgrade: websocket 的值必须设置成 websocket 表示升级为websocket 协议

Sec-WebSocket-Version: 13 表示支持的websocket的版本

Sec-WebSocket-Key 发给服务端的随机字符串

Sec-WebSocket-Accept 响应给客户端的值

http和websocket比较

在这里插入图片描述

**相同点 : **

都是基于TCP 协议
都有加密传输 ws 和 wss , http 和 https
都是应用层协议
**不同点 : **

websocket 是双工通信协议 , http 但是单向协议
某种意义上来说websocket 补上了http的一些不足

 相关例子可以参考pc抖音或b站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anssummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值