jhipster EventSource请求超时

时间:2019-02-27 05:30:56

标签: java spring-boot jhipster spring-webflux

我在jhipster中遇到了JavaScript EventSource问题。我在正常的Spring Boot应用程序中将EventSource与Spring boot webflux一起使用。在那个项目中,当用户订阅/chat/subscribe时,连接保持打开状态很长时间(我测试了30分钟)。我的Spring Boot应用程序不使用任何配置。但是,当我在jhipster应用程序中使用EventSource时,恰好在两分钟内不活动后,连接关闭。我不知道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;
    }
}

客户端(我的componenet的一部分):

    ....
    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中,而不存在于普通的spring boot应用程序中! 感谢您的关注。

0 个答案:

没有答案