SseEmitter 代码实例
时间: 2024-10-12 21:04:01 浏览: 4
SseEmitter是Spring框架中的一个工具类,用于实现Server-Sent Events (SSE) 的服务器端推送功能。它通常用于实时更新场景,如网页聊天、股票行情等。下面是一个简单的SseEmitter的代码实例:
```java
import org.springframework.web.socket.server.SendResult;
import org.springframework.web.socket.server.support.ServerWebSocketHandler;
public class MySseHandler extends ServerWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
SseEmitter emitter = new SseEmitter();
// 每隔一秒钟发送一条消息
for (int i = 0; ; i++) {
String message = "Event: update\nData: Message " + i + "\n\n"; // 数据格式,包括事件名、数据内容和结束符
System.out.println("Sending message: " + message);
// 发送数据并处理结果
SendResult sendResult = emitter.send(message);
if (!sendResult.getFailure().isPresent()) { // 如果发送成功
Thread.sleep(1000); // 等待一秒后继续发送下一条消息
}
}
// 当关闭连接时,确保停止发送
session.closeHandler(session::close).addLast(emitter::stop);
}
// ... 其他 WebSocket 相关的方法
}
```
在这个例子中,`MySseHandler` 继承了 `ServerWebSocketHandler` 并覆盖了 `afterConnectionEstablished` 方法。当连接建立后,通过`SseEmitter`创建一个事件流,然后循环发送更新消息,并在每轮发送之间暂停1秒。