zyx 1 ano atrás
pai
commit
d01a887671

+ 16 - 5
src/main/java/com/sxtvs/open/api/review/controller/SseController.java

@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 
 import java.io.IOException;
+import java.util.concurrent.ThreadPoolExecutor;
 
 @Controller
 @RequestMapping("/user")
@@ -27,16 +28,26 @@ public class SseController {
     @Autowired
     private AliyunLogger logger;
 
+    @Autowired
+    private ThreadPoolExecutor poolExecutor;
+
     @GetMapping(path = "/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
     @NoAPIResponse
     public SseEmitter handleSse(@RequestParam("token") String token) throws IOException {
-        logger.debug("msg","1");
+        logger.debug("msg", "1");
         SseEmitter sseEmitter = new SseEmitter(0L); // 设置超时时间
-        logger.debug("msg","3");
+        logger.debug("msg", "3");
         sseService.monitor(token, sseEmitter);
-        logger.debug("msg","4");
-        sseEmitter.send(SseEmitter.event().name("hello").data("hello"));
-        logger.debug("msg","5");
+        logger.debug("msg", "4");
+        poolExecutor.execute(() -> {
+            try {
+                Thread.sleep(1000);
+                sseEmitter.send(SseEmitter.event().name("hello").data("hello"));
+            } catch (Exception e) {
+                logger.error("error", e);
+            }
+        });
+        logger.debug("msg", "5");
         return sseEmitter;
     }