Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: опытные помогите мыслью
Форумы портала PHP.SU » » Вопросы новичков » опытные помогите мыслью

Страниц (1): [1]
 

1. Bio man - 27 Октября, 2011 - 22:36:10 - перейти к сообщению
вот делаю я чат. как отслеживать пользователей кто в чате (в конкретной комнате)? мне не нужен код, нужна сама идея, весь день думал, нечего не надумал
2. EuGen - 27 Октября, 2011 - 22:39:09 - перейти к сообщению
Записывайте время последнего действия (например, фразы) и сравнивайте с текущим. Если разница больше, скажем, 5 минут, то считать, что пользователь ушел в оффлайн.
3. Bio man - 27 Октября, 2011 - 22:55:09 - перейти к сообщению
вы не так меня поняли, как онлайн сделать я знаю и уже сделал, мне нужно отследить где пользователь находится! допустим в чате 10 человек и 3 из них в одной комнате, 3 в другой итд.. допустим
Флудильня[N]
Общение[N]
и желательно что бы ид этих пользователей можно было бы в дальнейшем использовать... надеюсь выразился понятно
4. OrmaJever - 27 Октября, 2011 - 23:04:11 - перейти к сообщению
ну а здесь смотря как у вас зделаны эти комнаты, чем они отличаются? Когда пишут сообщение как сервер знаю в какую комнату писать?
Вот отслеживать так как сказал EuGen, если человек написал последнее сообщение в общую значит он там, если в флудилку значит там. Если между комнатами нужно както переходить (типо вкладок на странице) то можно зделать при нажатии на вкладку другой комнаты js отправляет на сервер запрос что пользователь перешёл в ту комнату. Вобщем по разному может быть, смотря как зделан чат.
5. caballero - 27 Октября, 2011 - 23:28:48 - перейти к сообщению
пользователи по комнатам сами не лазят
если он в комнате значит он выбрал какое то действие и где то записано что он в этой комнате иначе как узнать куда посылать сообшения

у вас вообще есть уже база какая то
или делаю чат пока на уровне разметки в HTML?

как то странно звучит что у вас на ващем сайте с вашим кордом оказывается нужно что то отслеживать
6. Bio man - 27 Октября, 2011 - 23:37:56 - перейти к сообщению
есть таблица комнат, там хранится ид, название и еще 1 поле которое не имеет отношения к теме... тоесть комнаты создаются на лету (выбираются из БД) и в каждой комнате нужно подсчитать и запомнить ид пользователя(ей). вопрос больше направлен к БД, т.к нужно где то хранить ид тех кто в данный момент находятся и что то делают в конкретной комнате. может создать поле users и в него писать сериализированую строку с ид?
7. ams - 27 Октября, 2011 - 23:53:54 - перейти к сообщению
Каждые секунд 10 аяксом проверять кто в онлайне... А кто в каких комнатах приблизительно анологично Улыбка
8. OrmaJever - 28 Октября, 2011 - 00:01:56 - перейти к сообщению
вот правельный ответ.
caballero пишет:
если он в комнате значит он выбрал какое то действие и где то записано что он в этой комнате иначе как узнать куда посылать сообшения

Если у вас как-то не так значит чат плохо написан.
(Добавление)
Bio man пишет:
есть таблица комнат, там хранится ид, название и еще 1 поле которое не имеет отношения к теме... тоесть комнаты создаются на лету (выбираются из БД) и в каждой комнате нужно подсчитать и запомнить ид пользователя(ей). вопрос больше направлен к БД, т.к нужно где то хранить ид тех кто в данный момент находятся и что то делают в конкретной комнате. может создать поле users и в него писать сериализированую строку с ид?

как я себепредставляю чат: 2 таблицы, одна названия (ид комнат и всякая информация по ним), вторая пользователи (ид пользователя, ник, ид комнаты, время последнего действия (либо вход в комнату либо отправка сообщения) и т.д.) как только пользоватль заходит в чат попадает например в общую (в бд обновляется ид комнаты на общую, когда переходит в другие комнаты, в бд меняется ид комнаты). А узнавать кто сидит в этой комнате не сложно, нужно выбрать всех пользователей с ид этой комнаты у которых последнее действие было раньше чем 5 минут.
9. DeepVarvar - 28 Октября, 2011 - 00:43:19 - перейти к сообщению
OrmaJever пишет:
последнее действие было раньше чем 5 минут.

Когда я писал свое чудо техники, я тоже задался вопросом определения списка онлайн.
Так вот просто смотреть время последнего сообщения (это типа у нас тут зацепка такая), то если юзер ничего не будет писать означенное время, то его система посчитает "оффлайн", на самом же деле он будет читать все сообщения которые пишут другие.

Да и пять минут это слишком много.
"Вася" сидел в чате, а потом ушел, не разлогинился, а просто закрыл браузер.
Система его еще пять минут будет считать присутствующим.

В своем "чуде" я вынес интервал обновления в настройки.
Там стоит 10 сек. Каждый юзер каждый раз отправляет запрос "а нет ли новых сообщений?".
Его то и нужно использовать чтобы отфильтровать юзеров которые не присылали такой запрос уже N секунд.
И свое время запроса обновить, чтобы тебя не отфильтровали.

Bio man если мой чат еще не смотрели - посмотрите, возьмите принцип.
10. Bio man - 28 Октября, 2011 - 15:13:33 - перейти к сообщению
ого, скока ценной информации! а можно адрес чата? у меня не только чат а целый комплекс. в таблице пользователей есть поле where оно определяет где пользователь находится (в чате, форуме итд), я так понял, что лучше всего создать новое поле в пользователях - chat_room. и вписывать туда ид комнаты с определенным интервалом, если пользователь что то делает в комнате (нажал кнопочку какую нибудь). вообщем я понел как сделать такую штуку, спасибо всем за помощь
(Добавление)
и я делаю вап сайт
11. DeepVarvar - 28 Октября, 2011 - 15:18:34 - перейти к сообщению

 

Powered by ExBB FM 1.0 RC1