NAME
AnyEvent::PocketIO::Client - Socket.IO client
SYNOPSIS
# This APIs will be changed.
use AnyEvent;
use AnyEvent::PocketIO::Client;
my $client = AnyEvent::PocketIO::Client->new;
$client->on('message' => sub {
print STDERR "get message : $_[1]\n";
});
# first handshake, then open.
my $cv = AnyEvent->condvar;
$client->handshake( $server, $port, sub {
my ( $error, $self, $sesid, $hb_timeout, $con_timeout, $trans ) = @_;
$client->open( 'websocket' => sub {
$self->reg_event('foo' => sub {
# ...
});
$cv->send;
} );
} );
$cv->wait;
# ... loop, timer, etc.
$client->disconnect;
#
# OR socket.io client interface
#
use PocketIO::Client::IO;
my $socket = PocketIO::Client::IO->connect("http://localhost:3000/");
my $cv = AnyEvent->condvar;
my $w = AnyEvent->timer( after => 5, cb => $cv );
$socket->on( 'message', sub {
say $_[1];
} );
$socket->on( 'connect', sub {
$socket->send('Parumon!');
$socket->emit('hello', "perl");
} );
$cv->wait;
DESCRIPTION
Socket.IO client using PocketIO and AnyEvent.
This is beta version. APIs will be changed.
Currently acceptable transport id is websocket only.
METHODS
new
$client = AnyEvent::PocketIO::Client->new( %opts )
Returns a new object. it can take the follow options
- handshake_timeout
- open_timeout
handshake
$client->handshake( $host, $port, $cb );
The handshake routine. it executes a call back $cb
that takes an error (if any, otherwise undef
), client itself, the session id, heartbeat timeout, connection timeout and list reference of transports.
sub {
my ( $error, $client, $sesid, $hb_timeout, $conn_timeout, $trans ) = @_;
if ( $error ) {
say "code:", $error->{ code };
say "message:", $error->{ message };
}
# ...
}
open
$client->open( $transport_id, $cb );
After handshake
success, makes a connection to the server. Currently $transport_id
(case-insensitive) is websocket
only.
When the connection is made, $cb is executed. $cb takes error object and client object.
sub {
my ( $error, $client ) = @_;
if ( $error ) {
say "code:", $error->{ code };
say "message:", $error->{ message };
}
# ...
}
is_opened
$boolean = $client->is_opend
connect
$client->connect( $endpoint )
This method is for message type connect. If you want to make a connection to the server in real, call open
method.
disconnect
$client->disconnect( $endpoint )
Sends message type disconnect to the server and close the socket handle.
reg_event
$client->reg_event( 'name' => $subref )
Register an event triggered by server's emit.
You should call this method after open
ed.
emit
$client->emit( 'event_name', @args )
send
$client->send( 'message' )
conn
$conn = $client->conn; # PocketIO::Connection
on
$client->on( 'messsage_type' => $cb );
Acceptable types are 'open', 'connect', 'disconnect', 'heartbeat' and 'message'.
tranport
my $transport = $client->transport();
WRAPPER CLASS
Simple client module PocketIO::Client::IO.
use PocketIO::Client::IO;
my $socket = PocketIO::Client::IO->connect("http://localhost:3000/");
my $cv = AnyEvent->condvar;
my $w = AnyEvent->timer( after => 5, cb => $cv );
$socket->on( 'message', sub {
say $_[1];
} );
$socket->on( 'connect', sub {
$socket->send('Parumon!');
$socket->emit('hello', "perl");
} );
$cv->wait;
TODO
Currently this module supports websocket
only. Patches welcome!
SEE ALSO
AnyEvent, PocketIO, PcketIO::Client::IO
AUTHOR
Makamaka Hannyaharamitu, <makamaka[at]cpan.org>
COPYRIGHT AND LICENSE
Copyright 2012 by Makamaka Hannyaharamitu
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.