今回はピアアシストネットワークの話題です。Flash Player 10.1 の新機能ですね。
開発環境は Flash Player 10.1 対応が必要です。以下のコードを実際に試す場合は Adobe Labs のダウンロードページから Flash Player 10.1 ベータ版と Flash Builder 4 ベータ (または Flex Builder 3) 用の Player global swc をダウンロードしてお使いください。
GroupSpecifier クラス
ピアアシストネットワークを構成するには、まず GroupSpecifier のインスタンスを生成します。GroupSpecifier クラスは RTMFP のグループ名やグループの仕様を指定するためのクラスです。
下が、コンストラクタの定義です。
public function GroupSpecifier(name:String)
引数は 1 つで、指定するのはグループ名です。同一のグループに参加したいノードは、ここで同じ名前を指定します。
ですので、グループ名は、他のグループと区別しやすい名前にすることが重要です。できるだけ、誰が何のために使っているグループなのか、わかり易い名前にするのがよいでしょう。例えば、com.mycompany.rtmfp.demo.sample1 なんてのは使えそうです。
より確実にユニークな名前にしたいとか、ユニークな名前を考えるるのにあまり手間をかけたくない人のためには、専用のメソッドが用意されています。GroupSpecifier のインスタンスに makeUnique() メソッドを呼ぶと、かなり長めのランダムな文字列を足してくれます。下が makeUnique() メソッドの定義です。
public function makeUnique():void
makeUnique() を使用したときは、新しく生成されたグループの識別子を、グループに参加する他のノードに事前に渡す必要があります。安全にはなるが手間も増える、といったところでしょうか。
GroupSpecifier クラスの属性
GroupSpecifier のインスタンスには、名前だけでなくグループの仕様 (ポストできるかとかマルチキャストできるかとか) も指定します。
GroupSpecifier クラスにはそのための属性が用意されています。これらの属性値も、同じグループに参加するノード間では共通の値にする必要があります。
下が属性の一覧です。デフォルトでは全ての値は false になっています。
ipMulticastMemberUpdatesEnabled: IP マルチキャストソケットでメンバー情報交換できるかを指定 multicastEnabled: マルチキャストができるかを指定 objectReplicationEnabled: オブジェクト複製ができるかを指定 peerToPeerDisabled: P2P 接続ができないかを指定 postingEnabled: ポストができるかを指定 routingEnabled: ダイレクトルーティングができるかを指定 serverChannelEnabled: サーバー接続ができるかを指定
この中で peerToPeerDisabled だけは、機能を使えなくするための属性です。true を設定すると P2P 接続ができなくなってしまうので、普通は false のままにしておきます。
それ以外の属性は明示的に true を設定することで機能が使えるようになります。例えば、ポストを行うためには以下のような設定をします。
_groupSpecifier.postingEnabled = true; _groupSpecifier.serverChannelEnabled = true;
まず postingEnabled に true を設定します。また、serverChannelEnabled は Stratus とグループ情報の交換を行うために true にしておきます。
ちなみに peerToPeerDisabled を true にするのは、P2P 通信を利用せず IP マルチキャストのみを使いたい場合くらいかなと思います。その場合は下のように ipMulticastMemberUpdatesEnabled と併せて設定することになります。
_groupSpecifier.ipMulticastMemberUpdatesEnabled = true; _groupSpecifier.peerToPeerDisabled = true;
これで、IP マルチキャスト上のピアアシストネットワークが利用できます。(NetConnection のコンストラクタに "rtmfp:" を指定するのも忘れずに → NetConnection 編)
最後に、GroupSpecifier の属性設定については以下の 2 点に注意しましょう。
- コンストラクタに渡した名前が同じでも属性設定が異なると別のグループとして扱われます
- いったんグループに接続したら、その後に属性値を変更することはできません
コメントする