我正在尝试让服务器发送的事件与 JavaScript Web 客户端和 Spring Boot 1.5.7 应用程序一起使用。当客户端最初连接时从 REST 端点返回 SseEmitter 时,服务器日志中出现以下错误:
o.g.j.m.i.WriterInterceptorExecutor :
MessageBodyWriter not found for media type=text/event-stream,
type=class org.springframework.web.servlet.mvc.method.annotation.SseEmitter,
genericType=class org.springframework.web.servlet.mvc.method.annotation.SseEmitter
REST 方法被很好地调用,我创建并保存发射器以供以后使用。当从 REST 方法返回发射器时,会抛出上述异常。
我只有在 Web 客户端(Chrome 和 Firefox)中使用 EventSource 时才得到这个,而不是在使用 curl 时。我什至可以在浏览器中输入 URL 并获得响应,而不会在服务器上出现错误。
我几乎在关注我能找到的每一个例子。
JavaScript:
const es = new EventSource('https://localhost:8443/sse');
es.onmessage = e => {console.log(e.data);};
es.onerror = e => {console.log('onerror:' + e);};
es.onopen = e => {console.log('onopen');};
服务器:
@GET
@Path("/sse")
@Produces({"text/event-stream"})
public SseEmitter sse() {
SseEmitter emitter = new SseEmitter();
... save for later ...
return emitter;
}
有任何想法吗?
谢谢你。