package Service::Echo;
use Moose;
extends 'Kamaitachi::Service';
with 'Kamaitachi::Service::AutoConnect';
sub on_invoke_echo {
my ($self, $session, $req) = @_;
$req->response(@{ $req->args });
}
1;
my $kamaitachi = Kamaitachi->new( port => 1935 );
$kamaitachi->register_services(
'echo' => 'Service::Echo',
);
$kamaitachi->run;
package Service::Chat;
use Moose;
extends 'Kamaitachi::Service';
with qw/Kamaitachi::Service::AutoConnect
Kamaitachi::Service::Broadcaster
/;
sub on_invoke_send {
my ($self, $session, $req) = @_;
my $msg = $req->args->[1];
my $res = $self->broadcast_notify_packet( onMessage => $msg );
$self->broadcast( $session => $res );
return $req->response; # return null response
}
1;
my $kamaitachi = Kamaitachi->new( port => 1935 );
$kamaitachi->register_services(
'chat' => 'Service::Chat',
);
$kamaitachi->run;
var nc:NetConnection = new NetConnection;
nc.connect("rtmp://hostname/chat");
視聴
配信
package Service::LiveStreaming;
use Moose;
extends 'Kamaitachi::Service';
with 'Kamaitachi::Service::AutoConnect',
'Kamaitachi::Service::Streaming';
1;
use Kamaitachi;
my $kamaitachi = Kamaitachi->new;
$kamaitachi->register_services(
'rpc/echo' => 'Service::Echo',
'rpc/chat' => 'Service::Chat',
'stream/live' => 'Service::LiveStreaming',
);
$kamaitachi->run;