SSE java服务端向客户端body发送数据 前端getRender
时间: 2023-07-06 11:15:57 浏览: 124
如果你想在服务端向客户端发送数据时,让前端直接渲染接收到的数据,可以按照以下步骤实现:
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. 在前端页面中添加EventSource对象,监听服务端发送的数据,并在回调函数中使用innerHTML将数据渲染到页面中。
```
var eventSource = new EventSource('http://localhost:8080/events');
eventSource.addEventListener('message', function(event) {
document.getElementById('message-container').innerHTML = event.data;
});
```
在上述代码中,我们使用了document.getElementById('message-container')获取了一个用于显示数据的HTML元素,并将事件回调函数中接收到的数据event.data赋值给innerHTML属性,从而实现了数据的渲染。
注意事项:
- SSE连接仅支持单向通信,即服务端只能向客户端发送数据,不能接收客户端发送的数据。
- 在服务端发送数据时,需要使用SseEventSink对象的send方法,将OutboundSseEvent对象发送给客户端。
- 在前端接收数据时,需要使用EventSource对象的addEventListener方法,监听服务端发送的事件,并在事件回调函数中处理数据。
阅读全文