список подключенных пользователей
Добавлено: 17 май 2006, 18:14
есть ли способы узнать список подключенных к фаирберду пользователей?
возникла необходимость распределять приходящие смс сообщения между текущими операторами поровну и показывать каждому свои. при логине оператора в таблицу ID, IP, OPERATOR_ID процедурой прописывается номер оператора в соответствующую его IP-адресу строчку. дисконекты же не обозначаются никак по причине невозможности 100% гарантировать правдивость (снятия клиентсовй программы, выключения по питанию и т.д.) смс сообщения ловит и вставляет в таблицу сервис который крутится на сервере и не хотелось бы его каким-либо образом вязать на клиентскую программу (например посылать броадкастовые запросы во все клиентские проги и ждать ответа "я живой"), но тем не менее прописывать ID оператора которому пришедший смс должен отобразится - надо. я придумал следущее решение. в таблицу связи IP-адреса и OPERATOR_ID добавляю поле LASTUPDATE и апдейчу его таймером с клиентской проги на now. в сервисе при приходе смс, увеличиваю значение специально заведенного генератора на единицу, беру его значение по модулю записей в таблице (количество рабочих мест вообще) и проверяю для этой записи поле LASTUPDATE и если разница между текущим временем и его (LASTUPDATE) значением меньше частоты обновления с клиентской программы, то вставляю пришедшее смс сообщение с вычисленным OPERATOR_ID в таблицу с смс сообщениями. если же больше - значит оператор ушел в "оффлайн" любым возможном способом и я продолжаю поиск "онлайнового" оператора вплоть до не нахождения ни одного (чего по идее не должно случаться) и добавления нового смс с OPERATOR_ID = -1 (будет видно всем). весь этот гемморой только по причине отсутствия, насколько мне известно, чего-то типа служебной таблицы где например находятся IP адреса подключенных (не дропнутых) на данный момент пользователей.
может есть более правильные, но простые в реализации методы?
возникла необходимость распределять приходящие смс сообщения между текущими операторами поровну и показывать каждому свои. при логине оператора в таблицу ID, IP, OPERATOR_ID процедурой прописывается номер оператора в соответствующую его IP-адресу строчку. дисконекты же не обозначаются никак по причине невозможности 100% гарантировать правдивость (снятия клиентсовй программы, выключения по питанию и т.д.) смс сообщения ловит и вставляет в таблицу сервис который крутится на сервере и не хотелось бы его каким-либо образом вязать на клиентскую программу (например посылать броадкастовые запросы во все клиентские проги и ждать ответа "я живой"), но тем не менее прописывать ID оператора которому пришедший смс должен отобразится - надо. я придумал следущее решение. в таблицу связи IP-адреса и OPERATOR_ID добавляю поле LASTUPDATE и апдейчу его таймером с клиентской проги на now. в сервисе при приходе смс, увеличиваю значение специально заведенного генератора на единицу, беру его значение по модулю записей в таблице (количество рабочих мест вообще) и проверяю для этой записи поле LASTUPDATE и если разница между текущим временем и его (LASTUPDATE) значением меньше частоты обновления с клиентской программы, то вставляю пришедшее смс сообщение с вычисленным OPERATOR_ID в таблицу с смс сообщениями. если же больше - значит оператор ушел в "оффлайн" любым возможном способом и я продолжаю поиск "онлайнового" оператора вплоть до не нахождения ни одного (чего по идее не должно случаться) и добавления нового смс с OPERATOR_ID = -1 (будет видно всем). весь этот гемморой только по причине отсутствия, насколько мне известно, чего-то типа служебной таблицы где например находятся IP адреса подключенных (не дропнутых) на данный момент пользователей.
может есть более правильные, но простые в реализации методы?