Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как отследить закрытие окна или вкладки браузера? (http://www.flasher.ru/forum/showthread.php?t=170171)

linnard 20.10.2011 00:31

Как отследить закрытие окна или вкладки браузера?
 
Существует ли событие в flash builder 4.5 которое перед закрытием окна или вкладки браузера вызывает окно подтверждения выхода из страницы? Например, когда приложение загружается, в базу данных записывается уникальный id пользователя. А когда пользователь закрывает браузер, id нужно удалить из базы.

GBee 20.10.2011 00:47

js по идее.
А ид удалять по умиранию сессии.

linnard 20.10.2011 00:54

Цитата:

Сообщение от GBee (Сообщение 1040475)
js по идее.
А ид удалять по умиранию сессии.

С добавлением все в порядке. А как тогда отследить умирание сессии?

Dimitry_II 20.10.2011 01:27

Слушатель сессий на сервере. Одно "но": обычно сессия устанавливается по дефолту на приличное время, в течении которого будет висеть. Если устроит, чтобы это было минут через 40, дерзай.

А так обычно используют событие onbeforeunload, которое сейчас поддерживается всеми браузерами. Но это все равно "костыли". В идеале структура проекта так должна строиться, чтобы слушать только сессию (тут тоже есть "нюансы" - повторный вход в проект с того же открытого браузера будет в той же сессии, что необходимо учитывать). И то - смысл? Нужно, чтобы что-то работало пока пользователь "на связи" - для этого есть сессия, в которой можно хранить параметры. Нет данного пользователя - нет сессии.

linnard 20.10.2011 01:41

Цитата:

Сообщение от Dimitry_II (Сообщение 1040482)
повторный вход в проект с того же открытого браузера будет в той же сессии, что необходимо учитывать

Тогда сессии не подходят...Насколько я понимаю onbeforeunload это javascript событие. Как мне его связать с flex приложением?

miki 20.10.2011 01:47

Поставь в приложении на таймер запрос скрипта. Этим скриптом пиши в базу время последнего конекта и если разница между "сейчас" и "тогда" больше N = юзер вышел.

trng 20.10.2011 01:54

Цитата:

Существует ли событие в flash builder 4.5...
flash player не имеет подобных событий. поэтому и в билдере их быть не может.
Более того, даже js вам ничего не гарантирует (на момент закрытия страницы у юзера может оборваться коннект, зависнуть браузер и т.п.).
Отслеживать умирание сессии тоже большого смысла нет, т.к. это самое умирание - не более чем некий "промежуток времени". Вот и используйте это - сохраняйте вместе с id метку времени (например, "от последнего обращения флеша к серверу"). И удаляйте из базы id с неактивностью больше суток или что то вроде этого.

linnard 20.10.2011 01:59

Цитата:

Сообщение от miki (Сообщение 1040487)
Поставь в приложении на таймер запрос скрипта. Этим скриптом пиши в базу время последнего конекта и если разница между "сейчас" и "тогда" больше N = юзер вышел.

Спасибо, такой вариант я уже использую - но он не точный. Поставил на Cron задание запускать php скрипт каждые 3 минуты, который удаляет id где разница во времени между "сейчас" и "тогда" больше N. Нужна максимальная точность...Тем более это текстовый чат. а если юзер переписываться будет полчаса, а удаляться будет все, где разница во времени 3 мин?

Bgg 20.10.2011 02:01

Поддерживать сокет соединение.

linnard 20.10.2011 02:04

Цитата:

Сообщение от Bgg (Сообщение 1040490)
Поддерживать сокет соединение.

А каким образом? Разве Flex поддерживает работу с сокетами?


Часовой пояс GMT +4, время: 11:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.