二重connect

Kamaitachi入門(その4) - ダウンロードたけし(寅年)の日記

なのでconnectについてはKamaitachi側ではon_connectとon_invoke_connectの2つをdispatchしていることになりますね。なんで2重に待ち構えるような構成にしてるんだろ?なにか意味があるような気がしますが、よくわかりません。

on_connect はTCP接続確立時のハンドラ、on_invoke_connect は他の関数呼び出しと同様 Flash Player から connect 関数がよばれたときに呼ばれるハンドラです。

RTMP は正直なんでこうなんだろーっていう理解不能な仕様が結構ありますのでサーバー実装だけみてると結構混乱すると思います。

クライアント側も参照すると多少マシになります。

いまは Flex SDK を使用すればフリーで as3 な swf をつくることができますので、RTMP 実装で学ぶ as3 入門というのはどうでしょうか。

あ、wonderfl もオススメですよ。

by typester / at 2009-01-20T16:36:00 / kamaitachi / Comment

URLベースでのACLをkamaitachiにもつけた

Wowza Media ServerでSWFVerification(っぽいこと)をする方法 - blog.katsuma.tv

それなら kamaitachi でもできるよ。ってことで使いやすいようにサービス化。

AutoConnect の代わりに、AutoConnectACL というサービスを使うと URL ベースでのアクセスコントロールをつけることができるようにしてみた。

echo サンプルの例なら、

package Service::Echo;
use Moose;

extends 'Kamaitachi::Service';

with 'Kamaitachi::Service::AutoConnectACL';

sub allow_pages {
    'http://www.unknownplace.org/*',
    'http://unknownplace.org/*',
}

sub allow_swfs { 'http://unknownplace.org/*' }

sub on_invoke_echo {
    my ($self, $session, $req) = @_;
    $req->response(@{ $req->args });
}

のような感じで、AutoConnectACLwith して allow_pagesallow_swfs を定義すればそこに書かれたURLにマッチするアクセスだけを許可することが出来る。

いちおう Flash の流儀にあわせてなんか glob マッチ方式にしてるんだけど、使いにくいので正規表現でもいけるようにしてある。

sub allow_pages { qr{^https?://(www\.)?unknownplace\.org} }

とか Regexp リファレンスつかえばおk。

allow_pages が swf の貼り付けてあるページの URL、allow_swfsが swf 自体の URL にマッチする感じ。

by typester / at 2008-12-09T10:53:00 / perl · kamaitachi / Comment