Rails 3: удаленные запросы плагина jquery.idletimeout терпят неудачу - PullRequest
0 голосов
/ 16 июня 2011

Я использую плагин jquery.idletimeout со следующим в моем application.js:

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 отображает статус «Прервано»):

Screenshot

Запросы от плагина к «/ 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)

Запрос удаленной ссылки показывает "... # show as JS", в то время как плагин не включает" JS ".Не уверен, если это является частью проблемы ...

В любом случае, это долго, но кто-нибудь видит, в чем проблема?Спасибо.

1 Ответ

1 голос
/ 12 ноября 2011

У меня была точно такая же проблема. idleTimeout поддерживает параметр AJAXTimeout, который по умолчанию равен 250 мс, но, очевидно, он слишком медленный (или по умолчанию не работает). В любом случае, если вы просто увеличите это значение до 500 или немного большего числа, оно будет работать нормально.

...