Я использую плагин 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 отображает статус «Прервано»):
Запросы от плагина к «/ 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 ".Не уверен, если это является частью проблемы ...
В любом случае, это долго, но кто-нибудь видит, в чем проблема?Спасибо.