Prechádzať zdrojové kódy

兼容 sid 异常情况

hubin 8 mesiacov pred
rodič
commit
0db1519ba4

+ 14 - 13
src/main/java/com/aizuda/boot/modules/system/service/impl/SysSSEServiceImpl.java

@@ -38,21 +38,22 @@ public class SysSSEServiceImpl implements ISysSSEService {
 
         // 用户会话ID
         String sid = userSession.getSid();
+        if (null != sid) {
+            try {
+                // 会话关联推送
+                emitters.put(sid, emitter);
 
-        try {
-            // 会话关联推送
-            emitters.put(sid, emitter);
+                // 当 emitter 完成、超时或发生错误时,从映射表中移除对应的会话信息
+                emitter.onCompletion(() -> emitters.remove(sid));
+                emitter.onTimeout(() -> emitters.remove(sid));
+                emitter.onError((e) -> emitters.remove(sid));
 
-            // 当 emitter 完成、超时或发生错误时,从映射表中移除对应的会话信息
-            emitter.onCompletion(() -> emitters.remove(sid));
-            emitter.onTimeout(() -> emitters.remove(sid));
-            emitter.onError((e) -> emitters.remove(sid));
-
-            // 向客户端发送一条连接成功的事件
-            emitter.send(SseEmitter.event().comment("connected"));
-        } catch (IOException e) {
-            // 如果发送消息失败,则从映射表中移除 emitter
-            emitters.remove(sid);
+                // 向客户端发送一条连接成功的事件
+                emitter.send(SseEmitter.event().comment("connected"));
+            } catch (IOException e) {
+                // 如果发送消息失败,则从映射表中移除 emitter
+                emitters.remove(sid);
+            }
         }
         return emitter;
     }