websocket:websocket是HTML5的协议,和http协议是没有关系的
HTTP协议:不支持持久链接,http的生命周期通过request来界定,分为两个版本 1.0版本--一次request,一次response,http协 议1.0就结束了。
1.1版本--增加属性keep-alive,在一次http连接中,可以发送多次request,response,但都是一次request,一次response,并且response不能主动发起,客服端发送了request,才能返回一个response。
Websocket协议:websocket借用了一部分http协议来完成握手,在原有的http握手的中增加了两个属性
Upgrade: websocket Connection: Upgrade
这个就是Websocket的核心了,告诉 Apache 、 Nginx 等服务器:注意啦,我发起的是Websocket协议
Upgrade: websocket Connection: Upgrade
依然是固定的,告诉客户端即将升级的是 Websocket 协议,而不是mozillasocket,lurnarsocket或者shitsocket。
然后, Sec-WebSocket-Accept 这个则是经过服务器确认,并且加密过后的 Sec-WebSocket-Key 。 服务器:好啦好啦,知道啦,给你看我的ID CARD来证明行了吧。。
后面的, Sec-WebSocket-Protocol 则是表示最终使用的协议。
至此,HTTP已经完成它所有工作了,接下来就是完全按照Websocket协议进行了。具体的协议就不在这阐述了。
补充知识:long poll--采取的是阻塞模型,发起一次request,没有response就一直保持连接,知道有resposne返回,然后再此建立连接,缺点:服务器会有很多连接,并发大。
ajax轮询:一直请求服务器,请求一次,返回一次,缺点:消耗资源,请求多。
而websocket服务端就可以主动推送信息给客户端,只要一次建立,就可以一直传递信息
核心区别:http协议,服务端想发送信息给客户端,必须客户端主动发起一次request,而websocket则只要连接建立,就可以随时给客户端发送消息。
继续阅读与本文标签相同的文章
-
Mybatis之discriminator(鉴别器)详解
2026-05-18栏目: 教程
-
前端进阶|第十一天 当全局变量,块变量,函数叫了同一个名字。。
2026-05-18栏目: 教程
-
Leetcode 542:01 矩阵 01 Matrix
2026-05-18栏目: 教程
-
LeetCode 733: 图像渲染 flood-fill
2026-05-18栏目: 教程
-
Spring Cloud Alibaba 实战(二) - 关于Spring Boot你不可不知道的实情
2026-05-18栏目: 教程
