Я пытаюсь создать чат с нуля, используя Sinatra. Мне нужно определить, когда пользователь покидает страницу. Сначала я думал об использовании функции Javascript onbeforeunload
, но тогда пользователи могли на самом деле подделывать уйти или оставить без уведомления сервера.Обнаруживать, когда пользователь покидает поток событий
Мой код для потока части выглядит следующим образом:
get '/stream', :provides => 'text/event-stream' do
stream :keep_open do |out|
connections << out
end
end
Согласно одному из примеров файлов Синатры, chat.rb
, который в основном делает комнату, они используют
out.callback do
connections.delete(out)
end
но в моем тесте он не срабатывал, когда я закрывал страницу как тест (в моем примере у меня было puts
что-то на консоль, если код был запущен, и ничего не выводилось на консоль).
Есть ли более надежный способ определить, покидает ли пользователь поток?
Кроме того, я не использую socket.io (на стороне клиента) или что-то еще, но я открыт для него, если он решает мою проблему.
, какой сервер вы используете и какой sinata версии? –
@SirScript Я использую Thin (или WEBrick для разработки) и Sinatra 1.4.2 – Piccolo
http://www.sinatrarb.com/intro.html: «Некоторые серверы, такие как WEBRick, могут даже не поддерживать потоковое вещание». – utapyngo