|
@@ -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;
|
|
|
}
|
|
|
|