未找到媒体类型= text / event-stream的SseEmitter MessageBodyWriter

时间:2017-10-24 19:48:04

标签: spring-boot server-sent-events eventsource event-stream

我正在尝试使用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方法返回发射器时,会抛出上述异常。

我只在网络客户端(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;
}

有什么想法吗?

谢谢。

0 个答案:

没有答案