PDA

Просмотр полной версии : Вопрос про таймеры в клиентах


Обреня
07.07.2005, 04:21
Вопрос: как в жабе или mmc написать триг на реконнект через заданное время после дисконнекта? (найти момент дисконнекта не проблема, проблема - выждать)

Скрипты просьба не предлагать ибо не спортивно.

d_blacky
07.07.2005, 06:06
С чего вдруг скрипты -- и не спортивно? Занимают меньше места в конфиге и работают куда быстрее и корректней чем триги на внутренних псевдо-языках.

mmc: Вставить в *.ini строчки:

$reconnect_time = 180; # насколько помню, время в секундах
hook {
if ($failed_connect) {
sleep $reconnect_time;
CMD::cmd_connect "mud.ru", 4000;
}
1;
} "disconnect";
hook {
$failed_connect=1;
1;
} "connect";
alias {$failed_connect=0} "конец";
alias {$failed_connect=0} "постой";

p.s. возможные небольшие опечатки.

kilnik
07.07.2005, 12:00
это с каких это пор перл - внутренний псевдо(!)-язык mmc?

это решение довольно кривое, так как sleep подвешивает намертво процесс ммс. Прервать неполучиться (за те 180 секунд пока он будет спать). Если только убить.

я думаю лучше так.


my $timeout = 180;

hook
{
timeout { CMD::cmd_connect "194.87.5.70", 443 } , $timeout, 1
} 'disconnect';


+какую нибудь команду killall, которая порешит этот внутренний процесс, например


alias { CMD::cmd_kill $_ for (1..10) } 'killall'

у меня этот килал забинден вместе с '~', так что довольно удобно получаеться )

Ну или сделать с флагами, тоже можно. Главное не через sleep :)

Обреня
07.07.2005, 17:59
А чего цифирь 443 в предыдущем посте значит?

timeout { CMD::cmd_connect "194.87.5.70", 443 }

d_blacky
07.07.2005, 18:04
это с каких это пор перл - внутренний псевдо(!)-язык mmc?

Мдя, я думал я выразился относительно четко, а оказывается...
Поясняю для особо алгоритмичных:

Скрипты просьба не предлагать ибо не спортивно.

Я удивляюсь почему это такой негатив на тему скриптов? и пишу:


С чего вдруг скрипты -- и не спортивно? Занимают меньше места в конфиге и работают куда быстрее и корректней чем триги на внутренних псевдо-языках.

Тем самым я как раз говорил что скрипты (perl в mmc, и как правило JS в jmc), работают куда лучше чем всякие внутренние псевдо-языки (mmc-script внутренний пседов-язык в mmc или к примеру..... хм, я хз как его обозвать, назовем тоже jmc-script -- типа тот "язык" на котором пишут всякие "#match $a + $b" и т.д. в jmc).


А чего цифирь 443 в предыдущем посте значит?

ну mud.ru позволяет коннектиться к портам 110, 443, 4000, и 9000, вот это был один из них.


это решение довольно кривое, так как sleep подвешивает намертво процесс ммс. Прервать неполучиться (за те 180 секунд пока он будет спать). Если только убить.

Ну если кто-то выставляет таймер для реконнекта (вместо нажатия на альяс после дисконнекта) -- то возможно в это время он вообще не появляется у компа и ему все-равно реагирует ли mmc на какие-нибудь команды или нет во время исполнения sleep.
Просто в слепую килять процессы 1--10 тоже как-то не спортивно :).
В принципе ничего против твоего варианта не имею, заменил sleep в моем варианте ассинхронным потоком ну и в принципе остальное-то почти тоже самое. (у меня просто при уходе на постой или концом не делается авто-реконнект).

kilnik
08.07.2005, 23:32
Ю РНВМН)

Шана[МЗ]
11.07.2005, 13:00
ну mud.ru позволяет коннектиться к портам 110, 443, 4000, и 9000, вот это был один из них.

telnet mud.ru 110
Trying 194.87.5.70...
Connected to mud.ru.
Escape character is '^]'.
+OK
quit
+OK
Connection closed by foreign host.

на 110 POP3 висит давно уже :(

А 9000 надо перепечатать в 7000.

d_blacky
11.07.2005, 16:21
Почему-то в этом форуме изменены _дефолтные_ насколько я помню в vbb_3.0 настройки позволяющие только-что созданной группе пользователей (группа "программеры" создавалась отдельно от группы Users) редактировать свои сообщения.
А редактировать же можно только совсем совсем недавно созданные сообщения (у меня склероз на точные цифры) -- вроде не более 120 секунд после ее создания, поэтому я не могу изменить 9000 на 7000,
в принципе основным вопросом было -- "что значить 443", а не "на каких портах висит игра".