Java 如何在SpringREST应用程序中与heroku一起使用longpolling?
我试图在部署到Heroku的REST spring控制器中使用DelferredResult进行长时间轮询。但是,如果没有数据发送,Heroku h12会在30秒后自动发送超时。我知道Nodejs有发送一个字节来保持连接和避免超时的功能。对于Spring,有什么方法可以做到这一点吗?我不知道使用Spring的示例,但这里有一个使用原始Servlet的示例(使用Servlet 3.0中的AsyncContext): 重要的是设置Java 如何在SpringREST应用程序中与heroku一起使用longpolling?,java,spring,rest,http,heroku,Java,Spring,Rest,Http,Heroku,我试图在部署到Heroku的REST spring控制器中使用DelferredResult进行长时间轮询。但是,如果没有数据发送,Heroku h12会在30秒后自动发送超时。我知道Nodejs有发送一个字节来保持连接和避免超时的功能。对于Spring,有什么方法可以做到这一点吗?我不知道使用Spring的示例,但这里有一个使用原始Servlet的示例(使用Servlet 3.0中的AsyncContext): 重要的是设置传输编码:chunked标题,然后定期将空白打印到响应中,我这样做:
传输编码:chunked
标题,然后定期将空白打印到响应中,我这样做:
final ScheduledFuture chunkBlower = scheduledExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
try {
async.getResponse().getWriter().print(" ");
async.getResponse().getWriter().flush();
} catch (IOException e) {
// do nothing
}
}
}, 15, 15, TimeUnit.SECONDS);