Я хз, как это называется... система авторизации :)
От: CyberDemon Россия  
Дата: 04.02.13 16:51
Оценка:
Задача такая — есть софт, который должен авторизоваться на сервере (по уникальному секретному ключу, у каждого юзера свой), получать с сервера данные и дальше себе спокойно "ковыряться" до дисконнекта.
Проблема: только один клиент должен иметь возможность использовать ключ. Клиенты могут это делать по-очереди, но пока один не дисконнектнулся, второму будет выдаваться отлуп.
Как это делают без постоянного соединения? Хотелось бы сделать это малой кровью, без гигантских наворотов на сервере. С учетом потенциальных косяков связи и прочего. Короче, чтобы юзер потом не бился в бессильной злобе и не поливал помоями
Короче, где почитать или сразу в сорцы доступные кто-нить ткнет?

з.ы. самое простое, что приходит в голову:
1. Клиент шлет код, сервер возвращает realtime ID, записывает в БД ID клиента и время логина
2. Каждые эН минут клиент шлет пинг серверу со своим ID, сервер обновляет время в БД
3. Если сервак в какой-то момент видит, что кто-то в таймауте, он вытирает его из базы (дисконнект)
4. Если клиент сам дисконнектится, он шлет серверу код и свой ID, сервер из БД удаляет клиента
5. Если клиент2 пытается коннектиться, когда в базе есть запись о первом клиенте, ему дают отлуп
А вот тут засадос
6. Если клиент2 пытается коннектиться после форсмажорного дисконнекта первого клиента, а его по таймауту еще не выписали из БД, он получит отлуп.
Пинговать сервер (п.2) хотелось бы как можно реже.

Извиняюсь за сумбур
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.