我有一个webflux接口,后端正常运行,前端使用eventSource接收,打断点eventSource.onmessage无法进入,
后端代码
@GetMapping(value = "/webflux", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamEvents() {
return Flux.interval(Duration.ofSeconds(1))
.map(sequence -> "data: Message " + sequence + "\n\n");
}
前端代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>EventSource Stream Example</title>
</head>
<body>
<h1>Real-time Updates</h1>
<div id="messages"></div>
<script>
// 创建 EventSource 实例,连接到 WebFlux 接口
const eventSource = new EventSource('http://127.0.0.1:8090/test/webflux');
// 当接收到消息时,将其渲染到页面
eventSource.onmessage = function(event) {
const messageElement = document.createElement('div');
messageElement.textContent = event.data;
document.getElementById('messages').appendChild(messageElement);
};
// 错误处理
eventSource.onerror = function(event) {
console.error("EventSource failed: ", event);
// 在页面上显示错误消息
const errorElement = document.createElement('div');
errorElement.style.color = 'red';
errorElement.textContent = 'An error occurred, check the console for details.';
document.getElementById('messages').appendChild(errorElement);
};
</script>
</body>
</html>