Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Flex > Отправка запроса при закрытии окна браузера |
Автор: altermann14 18.7.2010, 13:38 |
Здравствуйте. Пишу клиент - серверное приложение. Клиент на flex 4, сервер на php. По сути - чат, на сервере хранятся id активных комнат, id пиплов, которые в сети и прочая инфа. Проблема в том, что надо как-то удалять юзверей из списка on-line, когда они закрывают браузер или переходят на другой сайт. Нашел JSInterface, который перехватывает JavaScript события, но с ним две проблемы: 1) при закрытии браузера блокируются все запросы из приложения (а это самое главное) 2) оно тупо у меня не заработало, я даже не стал разбираться, потому что 1 условие уже делает невозможным использование этой штуки. Вот вопрос: как передать на сервак какой-либо запрос из приложения при закрытии браузера или переходе на другой сайт? Спасибо. |
Автор: ksnk 18.7.2010, 14:37 |
altermann14, вообще говоря - никак. Можно вписывать автоматически время выхода юзера +10 минут от последней активности. проверять в онлайне или нет - если время "выхода" не больше текущего времени. В принципе, в JS есть событие onunload и onbeforeunload, которые обрабатываются броузерами достаточно одинаково, хотя и в меру своего понимания. На них можно повесить синхронный ajax запрос - "выход юзера", но если клиент просто тупо закрыл броузер, такие события могут не возникать вообще. |
Автор: altermann14 18.7.2010, 15:19 |
Спасибо, примерно так и думал..... жаль, просто ели много юзверей и много комнат, то нагрузка может быть большая на серв...... |
Автор: IDVsbruck 31.7.2010, 01:58 |
Если нужно реал-тайм приложение, то только соответствующие server-push-протоколы, благо, флеш и особенно флекс это очень неплохо умеют. Все остальное - от лукавого ... onunload и onbeforeunload - некроссбраузерно и не гарантийно - экстренное закрытие окна не отошлет запрос. Делать по неактивности - кустарно, да и зачем, когда есть слушатели сессий - ставишь длину сессии в 10 минут и просто отлавливаешь ее падение. Но это а) когда не надо срочно; б) не очень удобно, так как если пользователь 10 минут не трогает клаву/мышку, то вылетает. Одним словом - нужно больше инфы, чтобы угадать с ответом. |