如何在Spring Boot中实现实时通知
在Spring Boot中实现实时通知功能,可以使用WebSockets或者Server-Sent Events(SSE)。以下是使用SSE实现的一个简单示例:
- 添加依赖到你的
pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>org.springframework.boot
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 创建一个SSE的控制器:
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
@RestController
public class SseController {
@GetMapping(path = "/stream-notifications", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public SseEmitter handleSse() {
SseEmitter emitter = new SseEmitter();
// 在新线程中模拟发送事件
new Thread(() -> {
try {
for (int i = 0; i < 5; i++) {
emitter.send("data:" + "Notification " + i + "\n\n");
Thread.sleep(1000);
}
emitter.complete();
} catch (Exception e) {
emitter.completeWithError(e);
}
}).start();
return emitter;
}
}
- 在浏览器中打开一个连接到
/stream-notifications
的连接,即可接收服务端发送的通知。
<!DOCTYPE html>
<html>
<head>
<title>SSE Notifications</title>
</head>
<body>
<h1>SSE Notifications</h1>
<div id="notifications"></div>
<script>
var eventSource = new EventSource('/stream-notifications');
eventSource.onmessage = function(event) {
document.getElementById('notifications').innerHTML += event.data + '<br/>';
};
</script>
</body>
</html>
当你打开这个HTML页面时,它将建立一个到服务器的SSE连接,并显示服务器发送的通知。这个简单的例子演示了如何使用Spring Boot和SSE实现实时通知。
评论已关闭