PocketIO
view release on metacpan or search on metacpan
lib/PocketIO/Socket.pm view on Meta::CPAN
package PocketIO::Socket;
use strict;
use warnings;
use PocketIO::Message;
# DEPRECATED
sub send_message {&send}
sub send_broadcast { shift->broadcast->send(@_) }
sub send_broadcast_to_all { shift->sockets->send(@_) }
sub emit_broadcast { shift->broadcast->emit(@_) }
sub emit_broadcast_to_all { shift->sockets->emit(@_) }
sub new {
my $class = shift;
my $self = {@_};
bless $self, $class;
$self->{data} ||= {};
return $self;
}
sub session_id {&id}
sub id { $_[0]->{conn}->id }
sub set {
my $self = shift;
my ($key, $value, $cb) = @_;
$self->{data}->{$key} = $value;
$cb->($self) if $cb;
return $self;
}
sub get {
my $self = shift;
my ($key, $cb) = @_;
my $value = $self->{data}->{$key};
$cb->($self, undef, $value);
return $self;
}
sub on {
my $self = shift;
my $event = shift;
my $name = "on_$event";
unless (@_) {
return $self->{$name};
}
$self->{$name} = $_[0];
return $self;
}
sub emit {
my $self = shift;
my $event = shift;
$event = $self->_build_event_message($event, @_);
$self->send($event);
return $self;
}
sub send {
my $self = shift;
$self->{conn}->send(@_);
return $self;
}
sub broadcast {
my $self = shift;
return $self->{conn}->broadcast(@_);
}
sub sockets {
my $self = shift;
return $self->{conn}->sockets(@_);
}
sub close {
my $self = shift;
$self->{conn}->close;
return $self;
}
sub join {
my $self = shift;
my $room = shift;
return $self->{conn}->pool->room_join($room, $self->{conn});
}
sub leave {
my $self = shift;
my $room = shift;
return $self->{conn}->pool->room_leave($room, $self->{conn});
}
sub _build_event_message {
my $self = shift;
my $event = shift;
return PocketIO::Message->new(
type => 'event',
data => {name => $event, args => [@_]}
);
}
1;
__END__
=head1 NAME
PocketIO::Socket - Socket class
=head1 DESCRIPTION
Instance of L<PocketIO::Socket> is actually the object that you get in a
handler.
builder {
mount '/socket.io' => PocketIO->new(
handler => sub {
my $socket = shift;
# $socket is PocketIO::Socket instance
}
);
...
};
=head1 METHODS
=head2 C<new>
Create new instance.
=head2 C<close>
Close connection.
=head2 C<emit>
Emit event.
=head2 C<get>
Get attribute.
=head2 C<set>
Set atribute.
=head2 C<id>
Get session id.
=head2 C<session_id>
Same as C<id>.
=head2 C<on>
Register event.
=head2 C<send>
Send message.
=head2 C<sockets>
Get sockets object.
=head2 C<broadcast>
Get broadcasting object.
=head2 C<join>
Join the specified room.
=head2 C<leave>
Leave the specified room.
=cut
( run in 0.407 second using v1.01-cache-2.11-cpan-7add2cbd662 )