AnyEvent-Chromi
view release on metacpan or search on metacpan
lib/AnyEvent/Chromi.pm view on Meta::CPAN
$log->warning("can't call $method: not connected");
return;
}
my $id = int(rand(100000000));
my $msg = "chromi $id $method";
if($args) {
$msg .= " " . uri_escape(encode_json($args));
}
my $frame = Protocol::WebSocket::Frame->new($msg);
if($cb) {
$self->{callbacks}{$id} = $cb;
}
$self->{handle}->push_write($frame->to_bytes);
}
sub is_connected
{
my ($self) = @_;
return $self->{connected};
}
lib/AnyEvent/Chromi.pm view on Meta::CPAN
}
$self->{connected} or return;
# Post-Handshake
$ws_frame->append($chunk);
while (my $message = $ws_frame->next) {
if($message =~ /^Chromi (\d+) (\w+) (.*)$/) {
my ($id, $status, $reply) = ($1, $2, $3);
if($self->{callbacks}{$id}) {
$reply = uri_unescape($reply);
if($reply =~ /^\[(.*)\]$/s) {
&{$self->{callbacks}{$id}}($status, decode_json($1));
}
else {
die "error: $reply\n";
}
delete $self->{callbacks}{$id};
}
}
}
});
if($self->{mode} eq 'client') {
$self->{handle}->push_write($ws_handshake->to_string);
}
}
( run in 1.255 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )