一、基础知识
全双工、半双工和单工是通信系统中的三种数据传输模式,它们描述了数据在通信链路上的传输方式和方向。
- 全双工:数据可以同时在两个方向传输,双方可以同时发送和接收数据。这是双向通信最先进的模式,允许同时进行的双向交流。
- 半双工:数据可以在两个方向上传输,但不能同时进行。这意味着通信双方可以轮流发送和接收数据,但在某一时刻,只有一方能够发送数据。
- 单工:数据只能在一个方向上传输,不能进行双向通信。这意味着一方只能发送数据,另一方只能接收数据,通信是单向的。
二、什么是Websocket?
一种实时通讯方案,允许服务器主动发送信息给客户端。
WebSocket协议是基于TCP的一种新的网络协议,是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术,它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
三、为什么使用WebSocket?
在WebSocket出现之前,我们有一些其它的实时通讯方案,比较常用的有轮询,长轮询,流,还有基于Flash的交换数据的方式,接下来简单介绍下各种通信方式的特点。
① 轮询
这是最早的一种实现实时Web应用的方案;原理比较简单易懂,就是客户端以一定的时间间隔向服务器发送请求,以频繁请求的方式来保持客户端和服务器端的数据同步。但是问题也很明显:当客户端以固定频率向服务器端发送请求时,服务器端的数据可能并没有更新,这样会带来很多无谓的请求,浪费带宽,效率低下。
② 长轮询
长轮询是对定时轮询的改进和提高,目地是为了降低无效的网络传输。客户端像传统轮询一样从服务端请求数据,服务端会阻塞请求不会立刻返回,直到有数据或超时才返回给客户端,然后关闭连接,客户端处理完响应信息后再向服务器发送新的请求。当然,如果服务端的数据变更非常频繁的话,这种机制和定时轮询比较起来没有本质上的性能的提高。
③ iframe流
iframe流方式是在页面中插入一个隐藏的iframe,利用其src属性在服务器和客户端之间创建一条长连接,服务器向iframe传输数据(通常是HTML,内有负责插入信息的javascript)来实时更新页面。
④ WebSocket
WebSocket是一种全新的协议,随着HTML5草案的不断完善,越来越多的现代浏览器开始全面支持WebSocket技术了,它将TCP的Socket(套接字)应用在了webpage上,从而使通信双方建立起一个保持在活动状态的连接通道。
参考资料
总:https://github.com/YunaiV/SpringBoot-Labs
websocket https://www.iocoder.cn/Spring-Boot/WebSocket/?github
标签:WebSocket,请求,轮询,iframe,服务器,Websocket,客户端 From: https://www.cnblogs.com/zhegemaw/p/18383061