哈喽大家好,我是小歪~今天在工作中遇到一种协议---WebSocket,之前没怎么接触过,请教了开发大佬,下班回来在网上也查了查相关概念。就准备做个记录。
01 WebSocket协议概念
WebSocket是一种协议。与http类似。都是基于tcp的一种可靠性协议。与http不同的是,http是一种无状态协议。而WebSocket则是一种长链接协议,可以长时间与服务器保持一个连接状态,使客户端与服务端保持持续的数据交流。
如下是网上大佬解释,直接不厚道的粘贴
什么是websocket
WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的;Websocket是一个持久化的协议
websocket的原理
websocket约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便它们之间的通信在websocket出现之前,web交互一般是基于http协议的短连接或者长连接websocket是一种全新的协议,不属于http无状态协议,协议名为"ws"
websocket与http的关系
-
相同点:
都是基于tcp的,都是可靠性传输协议
都是应用层协议
不同点:
WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息
HTTP是单向的
WebSocket是需要浏览器和服务器握手进行建立连接的而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接
联系:
WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的
总结(总体过程):
首先,客户端发起http请求,经过3次握手后,建立起TCP连接;http请求里存放WebSocket支持的版本号等信息,如:Upgrade、Connection、WebSocket-Version等;
然后,服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据;
最后,客户端收到连接成功的消息后,开始借助于TCP传输信道进行全双工通信。
CSDN链接:https://blog.csdn.net/qq_54773998/article/details/123863493
02 应用场景、总结
请教了开发大佬。就目前很多项目。这种方式比较少见了。常见于消息通信项目,直播间推流项目等,主要还是用于实时通信相关的项目居多。
websocket是一种可以有服务器发起反向发起请求的一种协议,主要数据有更新,就可以推送给客户端使用。与http相比较。http就像是单信道,类似对讲机;websocket就如同是语音电话,双方同时在线,数据交流更直接,更快捷。
最后附上下班路上的随手一拍。北京的今天的傍晚还不错
随手记-2022年06月14日