LINUX.ORG.RU

Контроль статуса пользователей (онлайн/оффлайн)

 , , , ,


0

1

Я столкнулся с проблемой. Нужно, чтобы состояние пользователя (оффлайн/онлайн) показывалось другим пользователям. У меня есть несколько вариантов решения: 1)Обращение к БД напрямую при помощи библиотек Qt и запись. (ИМХО, бред: хранить пароль от БД прямо в коде - неИлитно) 2)Обращение через клиент к PHP скрипту(POST) - мне кажется, одно из самых правильных решений, но как понять, что если у юзера ВНЕЗАПНО вырубили интернет/электричество, то он уже в оффлайне? 3)Сервер. К нему обращается клиент и, предположим, каждые 5 секунд клиент посылает пакет с данными. Если пакет не пришел, сервер считает, что юзер в оффлайне. Сам сервер - на жабе/Qt console app/C++ - но он будет хавать немало оперативы.

Что посоветуете?

Нужно, чтобы состояние пользователя (оффлайн/онлайн) показывалось другим пользователям

каким пользователям ? точнее пользователям чего..какого сервиса??

Для сайто-юзеров решение есть в каждой первой книжке про php :)

вариант с уникальным сервером (лучше кстати TCP) поддержки сессий с клиентами - страшный велосипедизм, хотя и быстро реализуемый. Кстати кто вам сказал что там что-то ресурсоёмкое ? Он фактически полностью описан в док. по libc socket. Сложности только если решитесь на SSL/TLS, но не столько влияющие на объём, сколько гиморно разбираться и отлаживать.

MKuznetsov ★★★★★
()

пили легкий демон-сервер, только не на бд а на каком-то быстром хранилище в памяти (массив сойдет), вида id пользователя | дата последнего обращения. пинги слать не обязательно, можно делать запросы по факту активности пользователя, выполнения каких-то действий, например. далее, онлайн считать пользователя для которого дата последнего обращения < N минут. например. вот и все.

trashymichael ★★★
()
Последнее исправление: trashymichael (всего исправлений: 1)

WebSocket+Redis. Если пользователь открыл соединение по сокету, то он online. Хранить/передавать информацию можно через редис. Проблема только в авторизации клиентов, открывших сокет. Но тут на помощь придут куки.

blan4
()

perl + AnyEvent + JSON

Дело на час максимум. Жрать демон будет от 5-6 мб ОЗУ от силы. При этом если надо сделать как soap/rest-сервис и другие крутые слова, перл тоже подходит. Но json намного проще и быстрее.

gh0stwizard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.