SpringBoot整合WebSocket

WebSocket介绍

WebSocket是一种网络通讯协议,从Html5开始支持的一种在单个 TCP 连接上进行双向通信的协议

HTTP协议是一种无状态的、无连接的、单向的应用层协议,通信请求只能由客户端发起,服务端对请求作出应答处理,http协议无法实现服务器主动向客户端发送消息

这种单向请求的特点,如果服务器有连续的转态发生变化,客户端要获知就非常的麻烦,在以前的解决方案是通过频繁的异步ajax请求实现长轮询,但轮询的效率低,而且非常浪费性能(因为必须不停的连接)

http协议:

在这里插入图片描述

WebSocket协议:

在这里插入图片描述

WebSocket协议

本协议有两部分:握手和数据传输。

握手是基于http的

来自客户端握手(类似如下形式):

GET ws://localhost/chat HTTP/1.1
Host: localhost
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGh1IHNhbXBZSBub25jZQ==
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Version: 13

来自服务端握手(类似如下形式):

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9KYGzzhZRbK+xOo==
Sec-WebSocket-Extensions: permessage-deflate

字段说明

头名称说明
Connection: Upgrade标识该HTTP请求时一个协议升级请求。
Upgrade: websocket协议升级为WebSocket协议
Sec-WebSocket-Version: 13版本号
Sec-WebSocket-Key客户端采用base64编码的24位随机字符序列,服务端接受客户端HTTP协议升级的证明,要求服务端响应一个对应加密的Sec-WebSocket-Accept头信息作为应答。
Sec-WebSocket-Extensions协议扩展类型

客户端(浏览器)实现

WebSocket对象

浏览器通过 WebSocket 对象公开所有必须的客户端功能(支持HTML5的浏览器)

// url(以ws开头): ws://ip:port/资源名称
var ws = new WebSocket(url);

WebSocket事件和方法

事件

事件描述
onopen连接建立时触发
onmessage接受到服务端数据时触发
onerror通信发生错误时触发
onclose连接关闭时触发

方法

方法描述
send()向服务端发送数据

服务端(Java)实现

从Tomcat7.0.5版本开始支持WebSocket,Java WebSocket应用由一系列的WebSocketEndpoint组成,Endpoint是一个java对象,代表WebSocket链接的一端,对于服务端,我们可以视为处理具体WebSocket消息的接口,就像Servlet与http请求一样。

有如下两种方式定义Endpoin:

  • 编程式:即继承 javax.websocket.Endpoint 类,并实现其方法。
  • 注解式:定义一个POJO,并添加@ServerEndpoint相关注解。

Endpoint实例在WebSocket握手时创建,在客户端与服务端链接过程中有效,在链接关闭时结束

生命周期方法如下:

方法含义描述对应注解
onOpen当开启一个新的会话时调用,客户端与服务端握手成功后调用@onOpen
onClose当会话关闭时调用@onClose
onError当连接过程中出现异常时调用onError
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Spring Boot整合WebSocket,你需要进行以下步骤: 1. 首先,在pom.xml文件中添加WebSocket的相关依赖。可以使用以下两个依赖之一: - 从中提到的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` - 从中提到的依赖: ```xml <!--webSocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 2. 创建WebSocket配置类,这个类负责配置WebSocket的相关信息。你可以按照以下方式创建一个配置类[3]: ```java package com.loit.park.common.websocket; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter; @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } } ``` 3. 至此,你已经完成了WebSocket整合配置。现在,你可以在你的应用中创建WebSocket的控制器并定义你的WebSocket端点。你可以根据你的需求来实现WebSocket端点的业务逻辑。 这就是Spring Boot整合WebSocket的基本步骤。通过这种方式,你可以在Spring Boot应用中轻松地使用WebSocket进行实时通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot整合websocket](https://blog.csdn.net/weixin_45390688/article/details/120448778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [springboot整合websocket(详解、教程、代码)](https://blog.csdn.net/hjq_ku/article/details/127503180)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值