diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/SSEINotifyPushService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/SSEINotifyPushService.java index f0dce346..e8fd52bf 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/SSEINotifyPushService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/impl/SSEINotifyPushService.java @@ -2,21 +2,31 @@ package com.nflg.mobilebroken.admin.service.impl; import com.nflg.mobilebroken.common.pojo.dto.UserDTO; import com.nflg.mobilebroken.starter.service.INotifyPushService; +import com.nflg.mobilebroken.starter.service.SSEManagerService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.io.IOException; + @Service @Slf4j public class SSEINotifyPushService implements INotifyPushService { + @Resource + private SSEManagerService sseManagerService; + @Override public void push(UserDTO user, String subject, String content) { - //TODO - log.error("尚未实现"); + try { + sseManagerService.send(user.getId().toString(), subject, content); + } catch (IOException e) { + log.error("发送SSE失败", e); + } } @Override public boolean check(UserDTO user) { - return false; + return true; } } diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/SSEManagerBase.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/SSEManagerBase.java index da447dce..85cc9af5 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/SSEManagerBase.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/SSEManagerBase.java @@ -61,6 +61,7 @@ public class SSEManagerBase { public void send(String subject, String message,SseEmitter emitter) throws IOException { VUtils.trueThrowBusinessError(Objects.isNull(emitter)).throwMessage("没有找到sse"); + log.error("没有找到sse: "); emitter.send(subject+":"+message); } } diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/impl/APPSSEManagerService.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/impl/APPSSEManagerService.java index c8a633e6..4440db8b 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/impl/APPSSEManagerService.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/impl/APPSSEManagerService.java @@ -9,13 +9,14 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import java.io.IOException; import java.util.Map; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @Service @Slf4j public class APPSSEManagerService extends SSEManagerBase implements SSEManagerService { - protected static final Map EMITTERS = new ConcurrentHashMap<>(); + public static final Map EMITTERS = new ConcurrentHashMap<>(); @Override public SseEmitter connect(String userId) { @@ -27,7 +28,12 @@ public class APPSSEManagerService extends SSEManagerBase implements SSEManagerSe @Override public void send(String userId, String subject, String message) throws IOException { log.info(StrUtil.format("APP端SSE发送消息,用户id: {},标题: {},内容: {}", userId, subject, message)); - send(subject,message,EMITTERS.get(userId)); + SseEmitter emitter = EMITTERS.get(userId); + if (Objects.isNull(emitter)) { + log.error("用户未连接SSE: " + userId); + } else { + send(subject, message, emitter); + } } @Override diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/impl/AdminSSEManagerService.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/impl/AdminSSEManagerService.java index 66250b18..112ade07 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/impl/AdminSSEManagerService.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/impl/AdminSSEManagerService.java @@ -9,6 +9,7 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import java.io.IOException; import java.util.Map; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @Service @@ -27,7 +28,12 @@ public class AdminSSEManagerService extends SSEManagerBase implements SSEManager @Override public void send(String userId, String subject, String message) throws IOException { log.info(StrUtil.format("管理端端SSE发送消息,用户id: {},标题: {},内容: {}", userId, subject, message)); - send(subject,message,EMITTERS.get(userId)); + SseEmitter emitter = EMITTERS.get(userId); + if (Objects.isNull(emitter)) { + log.error("用户未连接SSE: " + userId); + } else { + send(subject, message, emitter); + } } @Override