Initial commit
This commit is contained in:
88
bin/test.pl
Executable file
88
bin/test.pl
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use 5.018;
|
||||
use strict;
|
||||
use warnings;
|
||||
use utf8;
|
||||
use open qw (:std :utf8);
|
||||
use English qw ( -no_match_vars );
|
||||
use version; our $VERSION = qw (1.0);
|
||||
|
||||
my $workdir;
|
||||
|
||||
# before we run, change working dir
|
||||
BEGIN {
|
||||
use Cwd qw (chdir abs_path);
|
||||
my @CWD = split /\//xms, abs_path ($PROGRAM_NAME);
|
||||
if ($#CWD > 1) { $#CWD = $#CWD - 2; }
|
||||
$workdir = join '/', @CWD;
|
||||
chdir $workdir;
|
||||
}
|
||||
|
||||
use lib ("$workdir/lib", "$workdir/vendor_perl", "$workdir/vendor_perl/lib/perl5");
|
||||
use Carp qw (carp);
|
||||
use Mojo::Redis;
|
||||
use Data::Dumper;
|
||||
|
||||
use Conf qw (LoadConf);
|
||||
my @messages = ('!cat', '!fox', '!drink', '!monkeyuser', '!xkcd');
|
||||
my $c = LoadConf ();
|
||||
|
||||
my $redis = Mojo::Redis->new (
|
||||
sprintf 'redis://%s:%s/1', $c->{server}, $c->{port}
|
||||
);
|
||||
|
||||
my $pubsub = $redis->pubsub;
|
||||
|
||||
# Добавим коллбэк на приход события в test.
|
||||
$pubsub->json ('test')->listen (
|
||||
'test' => sub {
|
||||
# my $self = shift;
|
||||
# my $message = shift;
|
||||
carp Dumper (@_);
|
||||
}
|
||||
);
|
||||
|
||||
# Добавим коллбэк на приход события в broadcast.
|
||||
$pubsub->json ('broadcast')->listen (
|
||||
'broadcast' => sub {
|
||||
# my $self = shift;
|
||||
# my $message = shift;
|
||||
carp Dumper (@_);
|
||||
}
|
||||
);
|
||||
|
||||
# Попробуем потыкать в наш сервер приложений разными сообщениями.
|
||||
# Этот коллбэк запускается по таймеру, раз в 3 секунды.
|
||||
Mojo::IOLoop->recurring (
|
||||
3 => sub {
|
||||
my $channel = 'test';
|
||||
if (int (rand (2))) { $channel = 'broadcast' }
|
||||
|
||||
$pubsub->json ('webapp:test')->notify (
|
||||
'webapp:test' => {
|
||||
from => $channel, # <- отвечаем в этот pubsub-канал
|
||||
userid => 'test_user',
|
||||
chatid => '#test_chat',
|
||||
plugin => 'dummy_plugin',
|
||||
message => $messages [int (rand ($#messages + 1))]
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
# поприветствуем наше тестируемое приложение, это необходимо чтобы оно подписалось на нас.
|
||||
$pubsub->json ('webapp:TEST')->notify (
|
||||
'webapp:TEST' => {
|
||||
from => 'test', # <- отвечаем в этот pubsub-канал
|
||||
userid => 'test_user',
|
||||
chatid => '#test_chat',
|
||||
plugin => 'dummy_plugin',
|
||||
message => 'Hello'
|
||||
}
|
||||
);
|
||||
|
||||
# Приветствовать test не нужно, так как он безо всякой эвристики подписан и на себя и на broadcast
|
||||
|
||||
# Все нужные обработчики напиханы в ивент-луп, можно его запускать.
|
||||
Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
|
||||
Reference in New Issue
Block a user