SpringBoot中Websocket的简单使用

news/2025/2/13 1:04:14/

目录

1 Websocket的定义及一些使用场景

2 使用方法

2.1 导入依赖坐标

2.2 创建WebSocket服务

2.3 编写配置类注册WebSocket

2.4 在需要处使用WebSocket服务


 

1 Websocket的定义及一些使用场景

定义:Websocket实现了浏览器与服务器全双工通信一浏览器和服务器只需要完成WebSocket 是基于 TCP 的一种新的网络协议。一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。(来自黑马程序员)

使用场景:商家端用户催单的提醒、商家端用户下订单的提醒……

2 使用方法

2.1 导入依赖坐标

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

2.2 创建WebSocket服务

模板,可以直接使用,如下:

@Slf4j
@Component //交给Spring容器管理
@ServerEndpoint("/ws/{sid}") //访问路径
public class WebSocketServer {//存放会话对象private static Map<String, Session> sessionMap = new HashMap();/*** 连接建立成功调用的方法*/@OnOpenpublic void onOpen(Session session, @PathParam("sid") String sid) {log.info("客户端:{}建立连接", sid);sessionMap.put(sid, session);}/*** 收到客户端消息后调用的方法** @param message 客户端发送过来的消息*/@OnMessagepublic void onMessage(String message, @PathParam("sid") String sid) {log.info("收到来自客户端:{}的信息:{}", sid, message);}/*** 连接关闭调用的方法** @param sid*/@OnClosepublic void onClose(@PathParam("sid") String sid) {log.info("连接断开:{}", sid);sessionMap.remove(sid);}/*** 群发,主要功能代码** @param message*/public void func(String message) {Collection<Session> sessions = sessionMap.values();for (Session session : sessions) {try {//服务器向客户端发送消息session.getBasicRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}}}

2.3 编写配置类注册WebSocket

也是模板代码,没啥好说的,如下:

@Configuration
public class WebSocketConfiguration {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}}

2.4 在需要处使用WebSocket服务

比如我们可以在用户完成支付之后,通过Websocket给商家端发送来单提醒。

@Service
public class OrderServiceImpl implements OrderService {@Autowiredprivate WebSocketServer webSocketServer;public void paySuccess(String outTradeNo) {//其它代码...//websocket向客户端发送消息Map map = new HashMap<>();//添加的内容String jsonString = JSON.toJSONString(map);webSocketServer.sendToAllClient(jsonString);}}

 


http://www.ppmy.cn/news/1362606.html

相关文章

嵌出式003--外部中断

中断&#xff1a;在主程序运行过程中&#xff0c;出现特定的中断触发条件也就是中断源&#xff0c;使得CPU暂停当前正在运行的程序转而去处理中断程序处理完成又返回执行原来被暂停的位置继续执行。 中断优先级&#xff1a;当多个中断源同时申请中断的时候&#xff0c;CPU会根…

家装服务管理:Java技术的创新应用

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

赵丽颖林更新《与凤行》传乌龙!惊艳特效惹争议

古装偶像剧《与凤行》是收视女王赵丽颖和实力小生林更新继《楚乔传》的再度合作&#xff0c;“星月”CP时隔多年的二搭还没开播&#xff0c;就已经把观众的期待值高高拉起。 《与凤行》预告惊艳四座&#xff0c;特效究竟出自谁手&#xff1f; 观众早已苦“五毛特效”久矣&…

IO进程线程复习:进程线程

1.进程的创建 #include<myhead.h>int main(int argc, const char *argv[]) {printf("hello world\n");//父进程执行的内容int num520;//在父进程中定义的变量pid_t pidfork();//创建子进程if(pid>0){while(1){printf("我是父进程&#xff0c;num%d\n&…

Window部署Exceptionless

Exceptionless Elasticsearch 版本&#xff1a; Exceptionless&#xff1a;8.1.0 Elasticsearch&#xff1a;7.17.5 JDK&#xff1a;11.0.10 目录 一、Elasticsearch运行 二、 Exceptionless 一、Elasticsearch运行 bin目录下elasticsearch.bat 直接运行 访问 http://lo…

半导体废水除镍用CH-90树脂出水未检出

项目名称 江苏PCB制造企业半导体废水除镍项目 工艺选择 沉淀工艺过滤系统离子交换放流池 工艺原理 镍离子以氢氧化物的形式做成镍泥&#xff0c;清液中微量镍离子通过螯合离子交换原理实现出水稳定达标 项目背景 随着5G通信、新能源汽车等新兴市场的快速发展&#xff0c…

数据分析之数据预处理、分许建模、可视化

数据分析通常包括数据预处理、建模和可视化这三个主要步骤。下面我会简要介绍每个步骤的内容&#xff1a; 数据预处理&#xff1a;数据预处理是数据分析的第一步&#xff0c;旨在清洗和准备原始数据以便后续分析。这个步骤通常包括以下任务&#xff1a; 缺失值处理&#xff1a;…

道可云元宇宙每日资讯|元宇宙国风秀在渝发布

道可云元宇宙每日简报&#xff08;2024年2月26日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 元宇宙国风秀在渝发布 为纪念梅兰芳先生诞辰130周年&#xff0c;以“新国风东方美”为主题的【承华灵境】元宇宙国风秀在重庆市人民大礼堂发布。其中&#xff0c;重…