App-SlideServer
view release on metacpan or search on metacpan
lib/App/SlideServer.pm view on Meta::CPAN
$c->send({ json => { key_incorrect => 1 } });
}
}
$c->stash('roles', join ',', keys %roles);
$self->log->info(sprintf "%s (%s) connected as %s", $id, $c->tx->remote_address, $c->stash('roles'));
$c->send({ json => { roles => [ keys %roles ] } });
$c->on(json => sub($c, $msg, @) { $c->app->on_viewer_message($c, $msg) });
$c->on(finish => sub($c, @) { $c->app->on_viewer_disconnect($c) });
$c->inactivity_timeout(3600);
#my $keepalive= Mojo::IOLoop->recurring(60 => sub { $viewers{$id}->send([1, 0, 0, 0, WS_PING, '']); });
#$c->stash(keepalive => $keepalive);
}
sub on_viewer_message($self, $c, $msg) {
my $id= $c->req->request_id;
$self->log->debug(sprintf "client %s %s msg=%s", $id, $c->tx->original_remote_address//'', $msg//'');
if ($c->stash('roles') =~ /\blead\b/) {
if (defined $msg->{extern}) {
}
if (defined $msg->{slide_num}) {
lib/App/SlideServer.pm view on Meta::CPAN
( slide_max => $msg->{slide_num} ) : ()
)
);
}
}
# if ($c->stash('roles') =~ /\b
}
sub on_viewer_disconnect($self, $c) {
my $id= $c->req->request_id;
#Mojo::IOLoop->remove($keepalive);
delete $self->viewers->{$id};
$self->update_published_state(viewer_count => scalar keys $self->viewers->%*);
}
sub on_page_changed($self) {
$_->send({ json => { page_changed => 1 } })
for values $self->viewers->%*;
}
sub on_slides_changed($self, $changed) {
( run in 0.668 second using v1.01-cache-2.11-cpan-df04353d9ac )