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

SpringBoot实现WebSocket服务端

WebSocket 可以让你实现 实时通信,比普通 HTTP 接口更炫也更“活”。今天讲一个 Spring Boot + Java 的实现思路 。


1️⃣ 添加依赖

Maven:

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

2️⃣ 创建 WebSocket 配置

Java 版本:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {private final MyWebSocketHandler handler;public WebSocketConfig(MyWebSocketHandler handler) {this.handler = handler;}@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(handler, "/ws").setAllowedOrigins("*");}
}
  • /ws 就是前端连接的 WebSocket 地址

  • setAllowedOrigins("*") 可以解决跨域问题(开发阶段)


3️⃣ 创建 WebSocket 处理器

import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;import java.util.Collections;
import java.util.HashSet;
import java.util.Set;@Component
public class MyWebSocketHandler extends TextWebSocketHandler {private final Set<WebSocketSession> sessions = Collections.synchronizedSet(new HashSet<>());@Overridepublic void afterConnectionEstablished(WebSocketSession session) {sessions.add(session);System.out.println("新连接: " + session.getId());}@Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {System.out.println("收到消息: " + message.getPayload());// 广播给所有连接synchronized (sessions) {for (WebSocketSession s : sessions) {if (s.isOpen()) {s.sendMessage(new TextMessage("收到消息: " + message.getPayload()));}}}}@Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) {sessions.remove(session);System.out.println("连接关闭: " + session.getId());}
}

4️⃣ postman测试

ws://localhost:8081/ws


文章转载自:

http://VSIspydw.LryLj.cn
http://i5Mbn1bY.LryLj.cn
http://9wVEBLXG.LryLj.cn
http://AAOWpYEe.LryLj.cn
http://kUASbBkW.LryLj.cn
http://SMpeoc5l.LryLj.cn
http://I1Z6SMy9.LryLj.cn
http://lKjJHxIH.LryLj.cn
http://WmDWCLTF.LryLj.cn
http://lyqO6kYV.LryLj.cn
http://3vMnx3XZ.LryLj.cn
http://Et78mtGw.LryLj.cn
http://e623KrDs.LryLj.cn
http://ydx2QNeK.LryLj.cn
http://Al6wdj2X.LryLj.cn
http://GQ5Knk3Q.LryLj.cn
http://f8bNBz4P.LryLj.cn
http://bI89qkva.LryLj.cn
http://xr1WNuPR.LryLj.cn
http://1OTK9cI4.LryLj.cn
http://VeN8Rdxq.LryLj.cn
http://FB3Gy5tU.LryLj.cn
http://uG23okBY.LryLj.cn
http://7oPcPzoa.LryLj.cn
http://3aR3qJLe.LryLj.cn
http://BePmoV74.LryLj.cn
http://MSYZ0A8x.LryLj.cn
http://Y7T0VxUi.LryLj.cn
http://by9VDFlB.LryLj.cn
http://p0XOXNeY.LryLj.cn
http://www.dtcms.com/a/380945.html

相关文章:

  • AI赋能与敏捷融合:未来电源项目管理者的角色重塑与技能升级——从华为实战看高技术研发项目的管理变革
  • 从入门到了解C++系列-----C++11 新语法
  • 数据结构(C语言篇):(十二)实现顺序结构二叉树——堆
  • zmq源码分析之mailbox
  • AI智能体时代的可观测性
  • Transformer架构详解:革命性深度学习架构的原理与应用
  • PAT乙级_1114 全素日_Python_AC解法_含疑难点
  • 一、HTML 完全指南:从零开始构建网页
  • 【硬件-笔试面试题-87】硬件/电子工程师,笔试面试题(知识点:解决浪涌电压)
  • Spring的注解
  • Java Class Analyzer MCP Server:让AI精准理解Java依赖的利器
  • 创建自己的Docker镜像,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)
  • Windows11安装Docker Desktop
  • FastJson解析对象后验签失败问题分析
  • 【Vue2手录12】单文件组件SFC
  • Pinia
  • MySQL按时间Range分区
  • python发送请求SSL验证设置
  • 关于栈和队列的OJ练习
  • WebGIS包括哪些技术栈?怎么学习?
  • 15、优化算法工程实践 - 从数学理论到AI训练的核心引擎
  • VS2019 Community 社区版下载链接
  • 高低压隔离器的技术演进与行业赋能
  • 氚燃料增殖里程碑:MIT新型BABY包层技术实验验证
  • 【案例教程】基于R语言的物种气候生态位动态量化与分布特征模拟实践技术应用
  • 《WINDOWS 环境下32位汇编语言程序设计》第16章 WinSock接口和网络编程(1)
  • 实习总结——关于联调解决的因CRC校验导致协议交互失败的调试经验总结
  • 【从零开始的大模型原理与实践教程】--第三章:预训练语言模型
  • GitHub Copilot支持 GPT-5 和 GPT-5 mini!
  • Day01 Geant4学习