当前位置: 首页 > article >正文

springboot使用websocket

文章目录

  • 一、概述
    • 1、简介
  • 二、 使用
    • 1、引包
    • 2、配置处理器
    • 3、前端测试

一、概述

1、简介

简介略,附上官方文档,spring5和spring6的官方文档内容大致是一样的:
https://docs.spring.io/spring-framework/docs/5.2.25.RELEASE/spring-framework-reference/web.html#websocket
https://docs.spring.io/spring-framework/reference/6.1/web/websocket.html

二、 使用

1、引包

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

2、配置处理器

创建WebSocket服务器可以实现WebSocketHandler或者,更有可能的是,扩展TextWebSocketHandler或者BinaryWebSocketHandler。以下示例使用TextWebSocketHandler

import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

import java.util.concurrent.CopyOnWriteArrayList;

public class MyHandler extends TextWebSocketHandler {

    // 可以定义一个存储所有session的容器
    private final CopyOnWriteArrayList<WebSocketSession> sessions = new CopyOnWriteArrayList<>();

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        // 建立请求
        sessions.add(session);
        System.out.println("Connection established: " + session.getId());
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        // 收到消息
        String payload = message.getPayload();
        System.out.println("Received message: " + payload);
        // 发送回复消息
        for (WebSocketSession s : sessions) {
            s.sendMessage(new TextMessage("Server received: " + payload));
        }
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        // 关闭链接
        sessions.remove(session);
        System.out.println("Connection closed: " + session.getId());
    }

}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

	/**
	 * 将前面的WebSocket处理程序映射到特定的URL
	 */
	@Override
	public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
		registry.addHandler(myHandler(), "/myHandler")
				//.addInterceptors(new HttpSessionHandshakeInterceptor()) // 可以拦截session属性
				.setAllowedOrigins("*"); // 跨域
		;
	}

	@Bean
	public WebSocketHandler myHandler() {
		return new MyHandler();
	}

}

3、前端测试

测试地址:https://tool.gitapp.cn/websocket/

连接ws://127.0.0.1:8080/myHandler,发送消息进行测试一下。

使用起来非常的方便


http://www.kler.cn/a/509564.html

相关文章:

  • Jenkins-基于Role的鉴权机制
  • 论文笔记-arXiv2025-A survey about Cold Start Recommendation
  • 【论文阅读笔记】基于YOLO和ResNet深度卷积神经网络的结直肠息肉检测
  • C#表达式和运算符
  • 数仓建模:如何设计可扩展性较好的同环比计算模型?
  • ubuntu20.04安装MySQL5.7
  • 什么是FPGA开发?
  • Java 接口安全指南
  • TOSUN同星TsMaster使用入门——3、使用系统变量及c小程序结合panel面板发送报文
  • AttributeError: ‘super‘ object has no attribute ‘__sklearn_tags__‘
  • InVideo AI技术浅析(三):计算机视觉
  • 深入理解 Windows Server 的核心功能:现代 IT 架构的基石
  • springboot基于微信小程序的健康管理系统
  • 力扣7-删除有序数组中的重复项
  • Python在多个Excel文件中找出缺失数据行数多的文件
  • OA-CNN:用于 3D 语义分割的全自适应稀疏 CNN
  • 数据增强方法及其工具
  • 模板编辑器(PHP)(小迪网络安全笔记~
  • 尺取法(算法优化技巧)
  • 瑞利衰落信道机理的详解
  • 利用逻辑回归进行分类
  • 了解MyBatis:一个灵活高效的O/R Mapping解决方案
  • 【博客之星2024】技术洞察:前沿技术趋势与创新实践
  • java项目之陕理工图书馆管理系统的设计与实现源码(ssm)
  • react中,如何使用antd的Row栅格系统使元素左对齐
  • 基于C#实现对象序列化的3种方案