|
Модераторы: Се ля ви |
|
wendstor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.1.2012 Репутация: нет Всего: нет |
Начил писать программу похожую на мессанджер, но с расширенным функционалом, но вот возник вопрос о реализации обновления статуса акаунта на сервере. Дело в том что программно можно реализовать отсылку данных на сервер о статусе акаунта (т.е. online, offline), а в случае если система ушла BSOD или свет "вырубили", то тогда на сервере и будет статус user'a online. Принцип реализации такой же как на примере ICQ, Skype. Так вот хочу реализовать связку ПО+Apache+MySql. Вообще, какими спосабами можно выкрутиться из данной ситуации?
Если кто сталкивался с подобной реализацией то пишите: ICQ 551911966 Skype Wendstor1982 Это сообщение отредактировал(а) wendstor - 25.1.2012, 11:18 |
|||
|
||||
newbee |
|
|||
Бревно Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: нет Всего: 19 |
Через некоторое время сокет отвалится - реагируй на это и меняй статус. Еще можно периодически слать свои специальные пакеты (аля ping-request pong-response) и, если в течение некоторого интервала времени клиент не отвечает, принудительно закрывать соединение и менять статус.
-------------------- You're face to face With man who sold the world |
|||
|
||||
wendstor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.1.2012 Репутация: нет Всего: нет |
так это всё понятно с реализацией в программе. Наверное не так объяснил, и так будет программа на Delphi она подключаеться к http серверу, устанавливает статус на http серваке (статус заноситься в таблицу MySQL), при нормальной работе подключения, отключения я смогу на http сервер послать свой статус, но вот как быть если произошли "траблы" на стороне клиента, статус клиента так и останиться в таблице MySQL "активен" вот мне нужно более рациональное решение по слежению за статусом на стороне http сервера. Вот не знаю как это решить, да и с минимальными нагрузками на сам http сервер... Это сообщение отредактировал(а) wendstor - 25.1.2012, 12:19 |
|||
|
||||
newbee |
|
|||
Бревно Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: нет Всего: 19 |
Я заголовок не читала. Если у тебя http, то общение идет в одни ворота (сервер), то есть опрашивать клиента нельзя. Значит на стороне сервера нужно делать систему мониторинга клиентов: если клиент не проявляет активность в течение N секунд, производить процесс отключения (смена статуса в БД и наверное еще какие-то сопутствующие манипуляции). А чтобы сервер не отключал живой, но бездействующий клиент, клиент должен следить за своей активностью и, если за n<<N секунд ничего не отправлял, бросать служебный пакет "я живой". Ну и разумеется примерно раз в ~n секунд сервер должен выполнять процесс мониторинга.
В качестве N и n я бы выбрала 15 и 5 минут соответствуенно, дополнительная нагрузка на сервер и сеть ничтожны. -------------------- You're face to face With man who sold the world |
|||
|
||||
Правила раздела "Философия программирования": | |
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Философия программирования | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |