![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 6
|
Привет!
Собственно, в заголовке и весь вопрос, но немного поясню: Есть чат, он вполне работает, но когда пользователь внезапно отключается от чата или от сети, у меня его имя продолжает висеть в числе пользователей. Сначала я хотел использовать socket на PHP, но из-за недостаточности опыта в работе с сокетами, он у меня получился очень сырой и жутко глючный. Пришлось отказаться, ума не хватило. Может быть использовать XMLSocket? Но тогда как? Я даже не знаю в каком направлении копать... Может ли кто-нибудь помочь в таком вопросе? Как сразу же после отключения пользователя (т.е. без задержек), в том числе и внезапного отключения, определить что его уже нет? Спасибо. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 6
|
Bright, а может заставить клиента постоянно посылать на сервер небольшое сообщение о присутствии. А сервер, если не получит через заданный промежуток сообщение, будет уверен, что клиента уже нет.
Не будет ли это большой нагрузкой на сервер? И вообще в плане надежности - такое возможно или нет? И про последнюю активность - можно подробнее? Кстати, пробовал ковырять FlashChat - оказалось, что там есть то, что мне нужно, но настолько профессионально написано... Сами знаете какого это - копаться в чужом коде. Получается, что все-таки не только по последней активности - есть и еще способы. Последний раз редактировалось K@@; 03.11.2006 в 20:48. |
|
|||||
|
Регистрация: Nov 2003
Адрес: www.flasher.ru/forum
Сообщений: 946
|
большая-небольшая, но это пустая нагрузка на сервер...
последняя активность - время последнего действия (вход/выход, сообщение, просмотр инфы и тд...) юзером. Если юзер в течении минуты-двух ничего не делает его выкидывают из чата. насчет исходников - можно и на флэшере поискать, такие темы были, там были исходники. может, что попроще найдется.
__________________
44px|freealt|... |
|
|||||
|
Каа, а насколько сильно ты удивишься, если узнаешь, что пользователь "в чате" находится крайне малое время, примерно такое, какое нужно серверу чтобы сгенерировать ответ "Ок" ?
И отключение пользователя - если, конечно, речь не идет о клиент-серверном приложении, а о встроенном в браузер флэш-объекте - происходит в тот момент, когда пользователь (его браузер) отослал на сервер "Connection: close", то есть каждый клик мышой на ссылке и на каждый вызов getURL() и им подобных.
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 6
|
Skubent,
Цитата:
Да, я понимаю про "крайне малое время" и совсем не удивился этому. Цитата:
Жаль, но я так и не получил ответа на вопрос. Неужели никто не сталкивался с этим вопросом? Кто-нибудь нашел решение? Bright, Цитата:
|
|
|||||
|
Забудь про сбой питания. Шанс того, что питание отпадет именно в тот момент, в который в сеть уходит пакет с куском заголовка сообщения равен нулю. Можешь поэкспериментировать, торкая в ресет при общении с каким либо сервером.
А закрытие соединения отправляется при КАЖДОМ запросе от пользователя. При перезагрузке соединения таки закрываются. А по твоему вопросу - выбираешь таймаут (скажем, три минуты), пишешь в отдельную таблицу время последнего действия каждого пользователя. Выкидываешь из чата всех, у кого время последнего действия < (текущее время - таймаут).
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|