Shinyproxy: [バグレポート]認証を有効にして長時間アイドル状態にした後のAjaxエラー

作成日 2019年03月25日  ·  9コメント  ·  ソース: openanalytics/shinyproxy

たとえば、以下の簡単なアプリがあるとします。 server = TRUE (サーバー処理モード)の場合、DTテーブルはajaxを使用することに注意してください。

library(shiny)
ui <- fluidPage(DT::DTOutput('tbl'))
server <- function(input, output, session) {
  output$tbl <- DT::renderDT(iris, server = TRUE)
}
runApp(list(ui = ui, server = server))

認証が有効になっている場合(任意の認証方法)、ブラウザーを開いてアプリを起動すると、すべてが正常に機能します(表の下のページボタンをクリックするなど)。 ただし、長時間アイドル状態(30分または1時間)が経過した後、ページボタンをクリックすると、DTの苦情がajaxエラーになります。 解決方法は簡単です。ページを更新するか、Shinyproxyへの新しい接続を開いて、再ログインを実行します。 しかし、それはユーザーを大いに混乱させます。

これは、長時間アイドル状態になった後、Shinyproxyが新しい接続に再ログインする必要があるが、既存の接続はまだ有効であるためです。 Shinyproxyはそれを新しい接続と見なすため、実行しようとしている既存のアプリがAJAX投稿をサーバーによって拒否されるという副作用があります...

私が信じているこれを解決する方法は

  • 再ログインが必要なときはいつでも既存のアプリを切断する(別名、タイムアウト)か、
  • 既存のアプリによって実行されたAJAX接続を有効/承認済みとして認識します...

ありがとう。

bug

最も参考になるコメント

@shrektan同様の問題があり、 OpenAnalyticsはこれを修正するのに役立ちました:
undertowタイムアウトを変更します(デフォルトでは30分です)。

server:
  servlet.session.timeout: 3600

以下は秒単位です。タイムアウトが発生しない場合は、 0設定してください。
ありがとう、ディラン

全てのコメント9件

@shrektan同様の問題があり、 OpenAnalyticsはこれを修正するのに役立ちました:
undertowタイムアウトを変更します(デフォルトでは30分です)。

server:
  servlet.session.timeout: 3600

以下は秒単位です。タイムアウトが発生しない場合は、 0設定してください。
ありがとう、ディラン

@dylancis回避策をありがとう! 感謝!

ただし、私見では、セッションがタイムアウトしたときに既存のアプリを切断することをお勧めするため、この問題は開いたままにしておきます。

@dylancisところで、少し話題から外れていますが、DTテーブルを使用したShinyproxyの新しいリリースを試しましたか? 原因を調べていませんが、POSTメソッドを受け入れられないというAJAXエラーが表示されます。

>>

@dylancisところで、少し話題から外れていますが、DTテーブルを使用したShinyproxyの新しいリリースを試しましたか? 原因を調べていませんが、POSTメソッドを受け入れられないというAJAXエラーが表示されます。

おっと-いいえ、まだしていません。

私にとっても-2.1から2.2に移行しましたが、 renderDataTable 1つも機能しなくなりました。 このページにリダイレクトするAJAXエラーがたくさんありますhttp://datatables.net/tn/7

バグだと思います...実際、開発ツールを開くと、AJAXリクエストの応答を確認できます-POSTメソッドはサーバーで受け入れられませんが、GETは問題ありません...

こんにちは@shrektanDTに関するこのアプリコットの問題を提起しましたか? アップグレードを計画していますが、アプリはdatatableライブラリに大きく依存しています。

@ dylancis #140でこのバグに関する新しい問題を提出しました

@dylancisが述べたように、 server.servlet.session.timeoutを増やすと、この問題を回避できます。
ただし、開いているWebSocketチャネル(ハートビートをトリガーしてコンテナーを存続させる)がある限り、セッションタイムアウトを自動的に遅らせる方がよいことに同意します。

注:このコメントは、401(許可されていない)応答をもたらすセッションの有効期限に関するものです。 これは、405(メソッドは許可されていません)の応答をもたらすajaxPOSTの問題に関するものではありません。

このページは役に立ちましたか?
0 / 5 - 0 評価