2017-03-11 6 views
0

私は、HerokuにデプロイされたRESTスプリングコントローラで長時間ポーリングを行うためにDeferredResultを使用しようとしています。しかし、Heroku h12は、送信されたデータがない場合、30秒後に自動的にタイムアウトを送信します。私はNodejsがdelayed responseを持っていることを知っているので、接続を維持しタイムアウトを避けるために1バイトを送信します。春にこれを行う方法はありますか?herokuでSpring RESTアプリでlongpollingを使用するには?

答えて

0

私は春を使用した例を知っているが、ここでは(サーブレット3.0からAsyncContextで)生のサーブレットを使用した例ですありません。

https://github.com/kissaten/slow-service-example/blob/master/src/main/java/Main.java

重要なことは、Transfer-Encoding: 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); 
関連する問題