SSE java服务端向客户端body发送数据
时间: 2023-09-05 11:15:11 浏览: 189
SSE(服务器推送事件)的案例,使用Java封装了请求发送,异常处理,拦截等基于sse的公共能力
在Java的SSE(Server-Sent Events)服务端向客户端发送数据,可以通过以下步骤实现:
1. 在服务端创建SSE连接,用于向客户端发送数据。
```
@GET
@Path("/events")
@Produces(MediaType.SERVER_SENT_EVENTS)
public void getServerSentEvents(@Context SseEventSink eventSink) {
//TODO: Add event listener and send events to eventSink
}
```
2. 在服务端添加事件监听器,用于接收客户端发送的请求,并向客户端发送数据。
```
@POST
@Path("/events")
@Consumes(MediaType.APPLICATION_JSON)
public void postServerSentEvents(String message, @Context Sse sse, @Context SseEventSink eventSink) {
OutboundSseEvent event = sse.newEventBuilder()
.name("message")
.data(message)
.build();
eventSink.send(event);
}
```
3. 在客户端添加事件监听器,用于接收服务端发送的数据。
```
var eventSource = new EventSource('http://localhost:8080/events');
eventSource.addEventListener('message', function(event) {
console.log('Received message: ' + event.data);
});
```
注意事项:
- SSE连接仅支持单向通信,即服务端只能向客户端发送数据,不能接收客户端发送的数据。
- 在服务端发送数据时,需要使用SseEventSink对象的send方法,将OutboundSseEvent对象发送给客户端。
- 在客户端接收数据时,需要使用EventSource对象的addEventListener方法,监听服务端发送的事件,并在事件回调函数中处理数据。
阅读全文