Принцип работы списка посетителей в чате.

  • Автор темы 2People
  • Дата начала

2People

Guest
Принцип работы списка посетителей в чате.

Я решил написать чат, но я не могу придумать как сделать список тех, кто сейчас в чате. Пока писал пришло в голову сделать на JavaScript при событии onUnload, сабмитить форму, или выполнять скрипт, который удаляет запись о пользователе. Будет ли это работать, ведь браузер уже закрыт? Подскажите концепцию.
 

Vasya

Guest
Вот такая, к примеру, "концепция".
Чат предполагает постоянное обновление страницы в браузере. По рефрешу. Скажем, каждые N секунд. Как юзер установит, или админ. Тогда отвалившимся считается тот, кто не запрашивал эту страницу N*2 секунд. Все остальные юзеры, считаются "сейчас в чате".
Если чат действует на принципе "постоянно недогруженная страница", то и вообще проще...
 

Апокалипсис

Guest
> Если чат действует на принципе "постоянно недогруженная > страница", то и вообще проще...

В точности так же. Не забываем про перебои в сетях :)
 

RomikChef

Guest
bettrrr
все очень просто.
у тебя ведь тело чата отдается скриптом?
ну вот запрашивай это тело, передавая ник.
а дальше все просто - если минуту ник не передавался, значит - отвалил
 

Yurik

/dev/null
Ping? Pong!
Цитата из http://php.spb.ru/chat/faq.html
Вижу много повторящихся подряд строк "<script>s()</script>". Зачем так много? А если убрать? Дикий трафик и т.д.

Чат каждые 15 секунд при неактивности людей в чате шлет такую строку (если в чате идет беседа, то s() не посылается). Эта строка выполняет очень важную проверку - по ней работает детектор лага. Если, допустим, секунд 30 сервер не шлет эту строку, то браузер клиента понимает, что у него (браузера) завис Интернет и реагирует на зависание: мигает человеку красным фоном (см. справку о детекторе лага), пробует перезагрузить окно и т.д. В случае даже кратковременной потери связи только из-за этой строки и только так можно определить, что браузер клиента подвис
 
Сверху