kamaitachi - The Perl Flash Media Server

Shibuya.pm Tech Talk #10

November 27th, 2008

What is kamaitachi?

...

What is kamaitachi?

...

What is kamaitachi?

...

What is kamaitachi?

FMSの機能とは

...

FMSの機能とは

...

FMSの機能とは

kamaitachi

...

kamaitachi

...

kamaitachi

...

kamaitachi

Demo

DEMO: Remoting (simple echo)

DEMO: Remoting (simple chat)

Source

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;

Source

my $kamaitachi = Kamaitachi->new( port => 1935 );
$kamaitachi->register_services(
    'echo' => 'Service::Echo',
);

$kamaitachi->run;

Source

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;

Source

my $kamaitachi = Kamaitachi->new( port => 1935 );
$kamaitachi->register_services(
    'chat' => 'Service::Chat',
);

$kamaitachi->run;

Source

var nc:NetConnection = new NetConnection;
nc.connect("rtmp://hostname/chat");

Demo 2

Demo: Media Streaming

視聴

配信

Source

package Service::LiveStreaming;
use Moose;

extends 'Kamaitachi::Service';

with 'Kamaitachi::Service::AutoConnect',
     'Kamaitachi::Service::Streaming';

1;

今回のデモのscript

use Kamaitachi;

my $kamaitachi = Kamaitachi->new;

$kamaitachi->register_services(
    'rpc/echo'    => 'Service::Echo',
    'rpc/chat'    => 'Service::Chat',
    'stream/live' => 'Service::LiveStreaming',
);

$kamaitachi->run;

今後

...

今後

...

今後

...

今後

...

今後

That's All