2016-04-27 14 views
0

私は何を持っているかの短い説明。私は、サーバーとクライアント 桟橋http/2プッシュストリームを開いたままにする

  • クライアントがプッシュストリーム
  • Serverはシングルスレッド
  • にこのストリームを介してクライアントにメッセージをプッシュするよう要求
  • GETリクエストのストリームが使用されているGET作る必要があり

    問題は、30秒間データを送信しないと、クライアントが自動的にストリームを閉じるように見えることです。

    私はすでにとはLong.MAX_VALUEする30秒からTIMOUTを設定しました:今私は逃れるように、単純な文字列ごとに20秒を押して、「ハートビート・回避策」を実施してきたため

    stream.setIdleTimeout(Long.MAX_VALUE); 
    

    タイムアウト。

    これが唯一の方法であるかどうかを知りたいだけです。または、私が見つけられなかったいくつかの設定を変更する必要がある場合。

    すべての回答ありがとうございました。

    よろしくお願いいたします。

  • 答えて

    1

    アイドルタイムアウトによってストリームや接続が閉じられないように、ハートビートが必要なリバースHTTPの長いポーリングを行っているようです。

    通常、サーバが切断されたクライアントをはるかに迅速に検出できるので、通常のHTTPロングポーリング(クライアントがハートビートを送信する)を行う方が良いです。

    ただし、サーバープッシュメッセージングを実行する場合は、CometDなどのソリューションを使用する方がよい場合があります。

    関連する問題