У меня проблема с javascript EventSource
в jhipster.Я использовал EventSource
с весенним загрузочным webflux в обычном приложении весенней загрузки.В этом проекте, когда пользователь подписывается на /chat/subscribe
, соединение остается открытым в течение длительного времени бездействия (я тестировал в течение 30 минут).Я не использую конфигурацию в моем приложении для весенней загрузки.Но когда я использую EventSource
в приложении jhipster, соединение закрывается ровно через 2 минуты бездействия.Я не знаю, где Jhipster установил конфигурацию для этого.Вот мой код:
Контроллер:
@Controller
@RequestMapping("/api")
public class ChatResource {
@Autowired
@Qualifier("ptpReplayProcessor")
private ReplayProcessor<String> ptpReplayProcessor;
@GetMapping(value = "/chat/subscribe", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
@ResponseBody
public Flux<String> subscribe() {
return Flux.from(ptpReplayProcessor);
}
}
ReplayProcessorConfig:
@Configuration
public class ReplayProcessorConfig {
@Bean("ptpReplayProcessor")
ReplayProcessor<String> ptpReplayProcessor() {
ReplayProcessor<String> replayProcessor = ReplayProcessor.create(0, false);
replayProcessor.subscribe(new BaseSubscriber<String>() {
@Override
protected void hookOnNext(String ptp) {
System.out.println("ptp replay processor called!");
}
});
return replayProcessor;
}
}
Клиентская часть (часть моего компонента):
....
this.source = new EventSource('http://localhost:9000/api/chat/subscribe');
this.source.onmessage = event => {
console.log(event);
};
this.source.onerror = event => {
console.log('error');
};
Пока сообщения отправляются и ptpReplayProcessor.onNext(message)
вызывается, браузер регистрирует сообщения и все правильно.Но если я не отправлю сообщение в течение 2 минут, консоль браузера покажет error
!.Я хочу знать, почему эта проблема существует только в jhipster, а не в обычном весеннем загрузочном приложении!Спасибо за внимание.