Это мой ресурс JAX-RS
@Singleton
@Path("priceTaskEvents")
public class PlainPriceTaskEventResource implements PlainPriceTaskEventService.PriceTaskEventCallback {
private SseBroadcaster broadcaster = new SseBroadcaster();
@Inject
private PlainPriceTaskEventService priceTaskEventService;
@GET
@Produces(SseFeature.SERVER_SENT_EVENTS)
public EventOutput listenToPriceTaskEvents() {
if (priceTaskEventService.getCallback() == null) {
priceTaskEventService.setCallback(this);
}
final EventOutput eventOutput = new EventOutput() {
@Override
public void write(OutboundEvent chunk) throws IOException {
super.write(chunk);
System.out.println(chunk.getData());
}
};
this.broadcaster.add(eventOutput);
return eventOutput;
}
@Override
public void onSupplierUpdated(PlainSupplier supplier) {
System.out.println("Supplier updated : " + supplier.getId());
broadcaster.broadcast(new OutboundEvent.Builder()
.mediaType(MediaType.TEXT_PLAIN_TYPE)
.name("supplier-updated")
.data(String.valueOf(supplier.getId())).build());
}
}
Код смоделирован по документации Джерси (https://eclipse-ee4j.github.io/jersey.github.io/documentation/2.25.1/sse.html#d0e11862)
Идея в том, что мой Javascript Пользовательский интерфейс зарегистрирует EventSource с URL /.../priceTaskEvents, а затем какая-то другая часть моей системы вызовет метод onSupplierUpdated, когда серверу будет что сообщить.
Проблема возникает, когда я пытаюсь чтобы проверить это из Chrome, либо используя браузер напрямую (введя URL-адрес в адресной строке), либо создав объект EventSource для чтения данных из события. Я получаю код ошибки net :: ERR_INCOMPLETE_CHUNKED_ENCODING 200. Кажется, я получаю только заголовки ответа, и возникает ошибка.
Это заголовки ответа, которые я получаю из запроса:
Кто-нибудь знает что-нибудь об этом?