From bcd96e924ea184da9a4dacfd16a5c3bfba14ac53 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 25 Jul 2024 10:24:16 +0800
Subject: [PATCH] 1
---
websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java b/websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java
index d27d0a5..6f1be4b 100644
--- a/websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java
+++ b/websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java
@@ -16,9 +16,7 @@
import java.io.IOException;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
@@ -31,7 +29,7 @@
*/
@Slf4j
@Component
-@ServerEndpoint("/websocket-server")
+@ServerEndpoint("/websocket-server/v1")
public class WsServer {
private Session session;
@@ -75,15 +73,16 @@
System.out.println(message);
}
try {
+ List<Future<?>> futures = new ArrayList<>();
wsServers.forEach(ws -> {
- threadPoolTaskExecutor.execute(() -> {
+ Future<?> future = threadPoolTaskExecutor.submit(() -> {
Session session = ws.session;
if (session != null && session.isOpen()) {
Lock sessionLock = getSessionLock(session.getId());
sessionLock.lock();
try {
synchronized (session){
- session.getAsyncRemote().sendText(message);
+ session.getBasicRemote().sendText(message);
}
} catch (Exception e) {
log.error("发送消息时出现异常: " + e.getMessage());
@@ -94,12 +93,23 @@
log.error("会话不存在或已关闭,无法发送消息");
}
});
+ futures.add(future);
});
+
+ //等待所有任务执行完成
+ for (Future<?> future : futures) {
+ try {
+ future.get();
+ } catch (InterruptedException | ExecutionException e) {
+ log.error("发送消息时出现异常: " + e.getMessage());
+ }
+ }
} catch (Exception e) {
log.error("发送消息时出现异常: " + e.getMessage());
}
}
+
public static Map<String, Object> jsonToMap(String json) {
Gson gson = new Gson();
Type type = new TypeToken<Map<String, Object>>() {
--
Gitblit v1.9.3