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