0

application.js で次のように jquery.idletimeout プラグインを使用しています。

jQuery.idleTimeout('#session_timeout', '#session_timeout a', {
  idleAfter: 600,
  pollingInterval: 15,
  keepAliveURL: '/session',
  serverResponseEquals: 'OK',
  // Additional "on" event functions...
});

関連する Ruby コードを次に示します。

# /app/controllers/sessions_controller.rb
class SessionsController < ApplicationController
  respond_to :html, :only => [:new, :create, :destroy]
  respond_to :js, :only => [:show]

  # Used by the jQuery.idleTimeout plugin
  def show
    if current_user_account # method to check for logged in user
      render :text => 'OK'
    else
      render :text => 'NOT OK', :status => 404
    end
  end
end

# /config/routes.rb
resource :session
resources :sessions
get 'login' => "sessions#new", :as => "login"  
get 'logout' => "sessions#destroy", :as => "logout"

ただし、ページが読み込まれると、ブラウザ (Chrome) のネットワーク コンソールに次のように表示されます (Firefox では「中止」ステータスが表示されます)。

スクリーンショット

プラグインから「/session」へのリクエストが行われますが、何かがおかしいです。プラグインは、これら 5 つの応答が失敗したと認識しているため、中止しています。テストするために、同じコントローラー/アクションへの次のリモート リンクを作成しました。

<%= link_to 'test remote session', session_path, :remote => true %>

これをクリックすると、すべてうまくいくようです。(上のスクリーンショットの最後のリクエスト。) 私の development.log ファイルで、プラグインのリクエストとリモート リンクのリクエストの違いに気付きました。

# Request from plugin:
Started GET "/session" for 127.0.0.1 at 2011-06-16 13:31:33 -0400
Processing by SessionsController#show as 
...
Rendered text template (0.0ms)
Completed 200 OK in 898ms (Views: 1.0ms | ActiveRecord: 21.8ms | Sphinx: 0.0ms)

# Request from remote link:
Started GET "/session" for 127.0.0.1 at 2011-06-16 13:33:36 -0400
Processing by SessionsController#show as JS
...
Rendered text template (0.0ms)
Completed 200 OK in 918ms (Views: 1.0ms | ActiveRecord: 2.5ms | Sphinx: 0.0ms)

プラグインには「JS」が含まれていませんが、リモート リンク リクエストには「...#show as JS 」が表示されます。これが問題の一部であるかどうかはわかりません...

とにかく、これは長いですが、誰が問題が何であるか分かりますか? ありがとうございました。

4

1 に答える 1

1

私はまったく同じ問題を抱えていました。idleTimeout は、デフォルトで 250ms に設定されている AJAXTimeout オプションをサポートしていますが、明らかに遅すぎます (または、デフォルトは実際には機能しません)。どちらの場合でも、それを 500 またはそれより少し大きい数に増やすだけで問題なく動作します。

于 2011-11-12T00:25:27.277 に答える