Я не вижу очевидной проблемы в вашем коде.Однако при использовании Payara 5 я рекомендую использовать JAX-RS SSE API вместо того, чтобы кодировать его самостоятельно в сервлете.
См. Пример и руководство здесь: http://ridingthecrest.com/blog/2017/02/22/jax-rs-2_1-new-feature-introduction.html
Альтернатива вашейконечная точка сервера с JAX-RS SSE:
@Path("server-sent-events")
@Singleton
public class ServerSentEventsResource {
@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
public void getMessageQueue(@Context SseEventSink eventSink, @Context Sse sse) {
while(true) {
try {
double rnd = Math.random() * 10000;
eventSink.send(sse.newEvent("custom-message"));
Thread.sleep(5000);
}
catch(IOException | InterruptedException e) {
e.printStackTrace();
printWriter.close();
break;
}
}
}
}
Также проверьте конечную точку сервера с помощью общего клиента SSE, например, curl поддерживает SSE и печатает входящие события по мере их поступления.Если это работает, то ваш клиент JavaScript имеет ошибку.