Я попытался реализовать SseEmitter в Grails, реализуя API и использовать angular во внешнем интерфейсе.
def realtime() {
Long timeoutTime;
use(groovy.time.TimeCategory) {
timeoutTime = Instant.now().toEpochMilli() + 5.minutes.toMilliseconds()
}
log.info("timeout time ${timeoutTime}");
final SseEmitter emitter = new SseEmitter();
emitter.onTimeout(new Runnable() {
@Override
void run() {
emitter.complete();
}
});
response.setContentType("text/event-stream, charset=UTF-8")
render emitter
}
Я реализовал, как указано выше, в Grails. Соединение закрывается, как только оно открывается. Оно не удерживается.