详情

首页手游攻略 SpringBoot使用WebSocket(二)

SpringBoot使用WebSocket(二)

佚名 2026-09-01 20:58:57

本文讲解如何SpringBoot如何使用WebSocket进行一对一发送消息,如果想学习SpringBoot结合Websocket群发消息,可以前往查看我的上一篇文章:SpringBoot使用WebSocket(一)

导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId></dependency>

新建Websocket配置类

/** * @author Gjing **/@Configurationpublic class WebsocketConfiguration {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}}

新建消息对象

/** * @author Gjing **/@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class Message {private String userId;private String message;}

新建websocket服务

/** * @author Gjing **/@ServerEndpoint("/test-one")@Component@Slf4jpublic class MyOneToOneServer {/** * 用于存放所有在线客户端 */private static Map<String, Session> clients = new ConcurrentHashMap<>();private Gson gson = new Gson();@OnOpenpublic void onOpen(Session session) {log.info("有新的客户端上线: {}", session.getId());clients.put(session.getId(), session);}@OnClosepublic void onClose(Session session) {String sessionId = session.getId();log.info("有客户端离线: {}", sessionId);clients.remove(sessionId);}@OnErrorpublic void onError(Session session, Throwable throwable) {throwable.printStackTrace();if (clients.get(session.getId()) != null) {clients.remove(session.getId());}}@OnMessagepublic void onMessage(String message) {log.info("收到客户端发来的消息: {}", message);this.sendTo(gson.fromJson(message, Message.class));}/** * 发送消息 * * @param message 消息对象 */private void sendTo(Message message) {Session s = clients.get(message.getUserId());if (s != null) {try {s.getBasicRemote().sendText(message.getMessage());} catch (IOException e) {e.printStackTrace();}}}}

测试

上线两个客户端

1

使用其中一个客户端发送消息给另外一个,只需要带上另外一个客户端的id

2

接收方客户端

3

本文中只介绍了最简单的业务处理方式,更深层次的处理各位请自行学习,demo源代码地址为:springboot-websocket

点击查看更多
推荐专题
热门阅读