zl程序教程

您现在的位置是:首页 >  Java

当前栏目

测试之路--随手记:WebSocket

2023-02-18 16:23:13 时间

哈喽大家好,我是小歪~今天在工作中遇到一种协议---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就如同是语音电话,双方同时在线,数据交流更直接,更快捷。