忍者ブログ

開発者ブログ

忍者ブログの元開発者が送る愛と感動と涙のスペクタクル。プログラムの開発日誌やタダの日記です。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

現在、新しいコメントを受け付けない設定になっています。

Kamaitachiの件

こんにちは。水野です。

前回Kamaitachiの件を書いてから、1週間以上が経ちました。

なんだかんだで今もがつがつと使わせてもらってます。
なので今日はその、Kamaitachiの件について。

KamaitachiはKAYACさんのtypesterさんという方が作られています。
Kamaitachiは以下のようなことをするためのPerlモジュールです。

・リアルタイム通信を行うもの
・RTMPを利用した通信
・AMFフォーマットを扱う

Kamaitachiは以下のようなモジュールを使います。
・Moose
・IO::Handle
・IO::Socket::INET
・Data::AMF
・Danga::Socket
・Danga::Socket::Callback



Kamaitachiには4種類のサンプルが入ってます。
サーバーサイドもクライアントサイドもソースが入っているので、それを参考にするとすぐにでも扱えちゃうと思います。
僕でも扱えたので。

【クライアント側】
ActionScript3辺りで、NetConnectionを使って接続します。

nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, status_handler);
nc.objectEncoding = ObjectEncoding.AMF0;
nc.client = this;n.connect("rtmp://hostname/path/to/");

こんな具合。
AMFを使うので、トラフィックが少し軽減されるのかな?
プロトコルはrtmpを指定して、サーバーのPATHを書きます。


データの送信は以下のような感じ

var data:String = '送りたいデータ';
nc.call("methodname", new Responder(null), data);

methodnameはサーバーサイドのメソッド名になります。

【サーバー側】
サンプルにあるserver.plを動かします。


server.plの中にある

$kamaitachi->register_services

こいつで実際に動作させるクラスを登録してあげます。

$kamaitachi->register_services(
'path/to' => 'Service::ServiceName',
);

path/toはクライアント側でコネクトする際のパス(rtmp://hostname/path/to)です。

Service::ServiceNameは自分で用意するクラス

server.plを動かすとrtmp(1935番)をLISTENします
FMS(FCS)が使うポートですね。


次に、実際に処理をするクラスを置きます。
(lib/Service/ServiceName.pmとか)

Moose
Kamaitachi::Service
Kamaitachi::Service::AutoConnect
Kamaitachi::Service::Broadcaster

辺りを使います。
Kamaitachi::Servce::*の中が実際に使われるコードが良く書かれてます。
量がそんなに無いので、見てみると何となく理解出来ちゃうと思います。


で、用意してあげるクラスに、sub on_invoke_**** {}なんてサブルーチンを用意してあげます。
****の部分がクライアント側で
nc.call("methodname", new Responder(null), data);
で呼びだしたmethodnameになりますね。

つまり、この部分で行いたい処理を書いていきまっす。

あとはそのサブルーチンの中で値を受け取る→同じセッションの奴に値を送るなんて処理を書くだけです。

拍手[0回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

画像RSS

おまとめボタン

忍者カウンター

忍者ビジター

忍者アド

ブログ内検索

最新コメント

プロフィール

HN:
mizuno
HP:
性別:
男性
職業:
主に侍などを少々
趣味:
競馬
自己紹介:
母子手帳の仮死と書かれてる場所に丸されてます。

フリーエリア

忍者ツールズプロフィール

忍者ツールズプロフィールは終了しました