网上搜了好多都是用 SseEmitter 实现的,自己搭的demo确实也可以了,但是我项目里有一个过滤器,死活配置都不行,终于用google搜了一下,第一篇帖子便解决了这个问题,代码和大佬链接如下:
@GetMapping(value = "/getTrue")
public void getData_True(HttpServletResponse response) {
response.setContentType("text/event-stream");
response.setCharacterEncoding("utf-8");
System.out.println("准备发消息");
try {
PrintWriter pw = response.getWriter();
for (int i = 0; i < 5; i++) {
if (pw.checkError()) {
System.out.println("客户端断开连接");
break;
}
Thread.sleep(1000);
String ss = "data:实时返回的随机数:" + Math.random() + "\n\n";
System.out.println(i + " " + ss);
pw.write(ss);
pw.flush();
}
pw.close();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
System.out.println("发消息完毕");
}