Red5&NetConnectionについて今更なこと

よくよく考えたら当たり前のことだけど、今更気づいた。。。

コネクションの際に諸々データを送信しているんだけど(例えば認証とか・・・)


今まで、こんな感じだった

var nc:NetConnection = new NetConnection();

nc.connect("rtmp://localhost/myApp/myRoom", hoge, fuga, foo);

こうするとRed5側でもパラメータの順番を気にしている必要がありJavaでこんなことをしていた

switch (params.length) {
case 3:
String foo = (String) params[2];
case 2:
String fuga = (String) params[1];
case 1:
String hoge = (String) params[0];
break;
}


実際には、その辺の処理をRed5に依存しない形にするためにこのパラメータをDIした認証とか諸々のオブジェクトに渡して処理していた。

ただ、上述の方法だとRed5のアプリ側に結構な処理を書く必要があり、Red5に依存する処理もかなり画いていたり、いざパラメータを追加するときに苦労したり
順番間違えたら終わりだったりとかなり痛いことがあったので困っていた。



で、クライアント側も全部自分で作るようになって、ActionScriptに慣れてきたら「てかバカ」これで多分できるじゃんこのほうが楽ジャン!ということに気づけた。

以下、単純にActionScriptのオブジェクトで渡す

var nc:NetConnection = new NetConnection();

nc.connect("rtmp://localhost/myApp/myRoom", {hoge:hoge, fuga:fuga, foo:foo});

サーバー側
オブジェクトはHashMapにキャストされるので

HashMap connectParam = (HashMap) params[0];

後はDIした諸々の処理で 引数をHashMap connectParamに、してしまえばRed5に依存する処理はかなり減らせられる