WebSocket

 介绍

WebSocket 是基于 TCP 的一种新的**网络协议**。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建**持久性**的连接, 并进行**双向**数据传输。

技术原理

  • WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
  • WebSocket通过HTTP/1.1协议的101状态码进行握手,完成握手后,客户端和服务器之间就直接可以创建持久性的连接,并进行双向数据传输。
  • WebSocket具有较少的控制开销,在不包含扩展的情况下,数据包头部大小相对较小,显著减少了数据传输的开销。
  • WebSocket支持更好的二进制支持,定义了二进制帧,可以更轻松地处理二进制内容。

HTTP协议和WebSocket协议对比

- HTTP是**短连接**
- WebSocket是**长连接**
- HTTP通信是**单向**的,基于请求响应模式
- WebSocket支持**双向**通信
- HTTP和WebSocket底层都是TCP连接

优势:

  1. 实时性:由于WebSocket是全双工的,服务器可以随时主动给客户端下发数据,无需等待客户端发起请求,因此具有更强的实时性。
  2. 节省资源:WebSocket通过减少HTTP请求的频率和开销,显著节省了服务器资源和带宽。
  3. 保持连接状态:与HTTP不同的是,WebSocket需要先创建连接,之后通信时可以省略部分状态信息,从而提高了通信效率。
  4. 跨域支持:WebSocket协议可以跨域使用,允许不同源的客户端与服务器进行通信。

思考:

既然WebSocket支持双向通信,功能看似比HTTP强大,那么我们是不是可以基于WebSocket开发所有的业务功能?

WebSocket缺点:

服务器长期维护长连接需要一定的成本
各个浏览器支持程度不一
WebSocket 是长连接,受网络限制比较大,需要处理好重连

结论:**WebSocket并不能完全取代HTTP,它只适合在特定的场景下使用

实现步骤

1). 直接使用websocket.html页面作为WebSocket客户端

2). 导入WebSocket的maven坐标

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

3). 导入WebSocket服务端组件WebSocketServer,用于和客户端通信

4). 导入配置类WebSocketConfiguration,注册WebSocket的服务端组件


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * WebSocket配置类,用于注册WebSocket的Bean
 */
@Configuration
public class WebSocketConfiguration {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }

}

5). 导入定时任务类WebSocketTask,定时向客户端推送数据

效果

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值