springboot集成websocket

本文介绍了如何在SpringBoot中集成WebSocket以实现服务端与客户端的实时通信。文章提到,除了前端轮询,还可以使用WebSocket保持长连接。集成过程包括引入依赖、配置ServerEndpointExporter、定义WebSocket接收类以及处理bean注入和结果集转换等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

服务端一般都是被动接收请求,不主动向客户端发送信息。在某些场景情况下,客户需要及时获取更新的数据,有两种方法解决,一是由前端轮询定时调用接口,二是采用websocket服务端与客户端保持实时通信。

集成说明

采用tomcat自带的websocket实现,其中内置tomcat和外置tomcat集成稍有差别,外置tomcat不需要注入ServerEndpointExporter,因为它由容器自己提供和管理,websocket接收类不需要加@Component注解。如果涉及用户权限的问题,需要定义websocket拦截器,本文不再赘述。

集成步骤

1、pom.xml引入依赖

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

2、定义配置类注入ServerEndpointExporter

@Configuration
public class WebSocketConfig {
   
   

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

3、定义websocket接收类

@ServerEndpoint("/websocket/{uuid}")
public class WebSocketServer {
   
   

    private WebSocketService webSocketService = SpringUtil.getBean(WebSocketService.class);

    private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
    /**
     * 记录当前在线连接数
     */
    private static int onlineCount = 0;
    /**
     * 存放每个客户端对应Session对象
     */
    private static ConcurrentHashMap<String, Session> webSocketMap = new ConcurrentHashMap<>();

    @OnOpen
    public void onOpen(Session session, @PathParam("uuid") String uuid) throws InterruptedException {
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值