App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/third-party/lib/PocketIO.pm view on Meta::CPAN
package PocketIO;
use strict;
use warnings;
use base 'Plack::Component';
our $VERSION = '0.00904';
use Plack::Util ();
use Plack::Util::Accessor qw(resource handler class instance method);
use PocketIO::Resource;
sub new {
my $self = shift->SUPER::new(@_);
$self->handler($self->_get_handler);
return $self;
}
sub call {
my $self = shift;
my ($env) = @_;
return PocketIO::Resource->dispatch($env, $self->handler)
|| [400, ['Content-Type' => 'text/plain'], ['Bad request']];
}
sub _get_handler {
my $self = shift;
return $self->handler if $self->handler;
die q{Either 'handler', 'class' or 'instance' must be specified}
unless $self->instance || $self->class;
my $method = $self->method || 'run';
my $instance = $self->instance
|| do { Plack::Util::load_class($self->class); $self->class->new; };
return $instance->run;
}
1;
__END__
=head1 NAME
PocketIO - Socket.IO middleware
=head1 SYNOPSIS
use Plack::Builder;
builder {
enable "SocketIO", handler => sub {
my $self = shift;
$self->on_message(
sub {
my $self = shift;
my ($message) = @_;
...
}
);
$self->send_message({buffer => []});
};
$app;
};
( run in 1.994 second using v1.01-cache-2.11-cpan-5a3173703d6 )