NetGroup クラス

NetGroup クラスは Flash Player 10.1 から追加された新しいクラスです。ピアアシストネットワークを利用するためのクラスで、ストリーミングにおける NetStream と同じ位置づけになります。

ほとんどのピアアシストネットワーク関連の機能 (ポスト、オブジェクト複製、ダイレクトルーティング) には NetGroup クラスの API を経由してアクセスします。

NetGroup インスタンスの生成

では、まず NetGroup のインスタンスの生成です。下は NetGroup のコンストラクタです。

NetGroup(connection:NetConnection, groupspec:String)
 

コンストラクタの 1 つ目の引数は NetConnection のインスタンスです。ここには例えば "Stratus への接続" のように、使用するランデブーサービス (あるいは使用しない事) を指定します。2 つ目の引数は GroupSpecifier のインスタンスから生成する文字列です。この中にはグループ名や利用する機能の情報などが含まれます。

NetGroup のインスタンスを生成すると、指定されたグループ情報を使ってピアアシストネットワークへの接続が行われます。

ここで具体的な例を。下は、ポストを行うグループを形成する場合のサンプルです。onConnect() メソッド内に NetGroup に関連するコードが含まれています。後は 1 対 1 ストリーミングのときとほぼ同じです。

private const SERVER:String = "rtmfp://stratus.adobe.com/";
private const DEVKEY:String = "自分の開発者キー";
private const GROUPNAME:String = "参加するグループ名"
 
private var _netConnection:NetConnection;
private var _netGroup:NetGroup;
private var _groupSpecifier:GroupSpecifier;
 
private function doConnect():void{
  _netConnection = new NetConnection();
  _netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
  _netConnection.connect(SERVER + DEVKEY);
}
 
private function onConnect():void {
  // GroupSpecifier のインスタンス生成
  _groupSpecifier= new GroupSpecifier(GROUPNAME);
  _groupSpecifier.postingEnabled = true;
  _groupSpecifier.serverChannelEnabled = true;
 
  // NetGroup のインスタンス生成
  _netGroup= new NetGroup(_netConnection, _groupSpecifier.toString());
  _netGroup.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
}
 
private function netStatusHandler(event:NetStatusEvent):void {
  switch (event.info.code) {
    case "NetConnection.Connect.Success":
      onConnect(); // 接続成功
      break;
  }
}
 

上のコードを実行すると、NetGroup のインスタンスが生成された時点で、ユーザーにピアアシストネットワークに参加するかを尋ねるダイアログが表示されます。下はそのスクリーンショットです。

peerassistednetworkdialgue.jpg

これにより、ユーザーの知らぬ間にグループに組み込まれていたということの無いようになっています。ユーザはこの画面を使って、参加するピアアシストネットワーク名を確認し、参加を許可または拒否できます。

社内ネットワークのように毎回わざわざ確認する必要のないネットワークに対しては、チェックボックスを使って設定を保存することができます。

新しい NetStatusEvent

NetGroup を使ったピアアシストネットワークへの接続の結果を知らせるために、NetStatusEvent には新しいコード (event.info.code) が追加されています。以下の 3 つです。

NetGroup.Connect.Success: // グループへの接続に成功
NetGroup.Connect.Rejected: // グループへの接続が拒否された
NetGroup.Connect.Failed: // グループへの接続に失敗
 

イベントのコードがこれらのどれかだった場合は、イベントオブジェクトの event.info.group から、接続中の NetGroup オブジェクトにアクセスできます。

また、他のノードとの接続と切断を知らせるコードも追加されています。ピアアシストネットワーク内では、直接接続されているノードを Neighbor (隣人ノード?) と呼んでいます。(全てのノードが接続されてる訳ではないので → 以前の記事

NetGroup.Neighbor.Connect: // 隣人ノードが接続された
NetGroup.Neighbor.Disconnec: // 隣人ノードが切断された
 

こちらのコード時は、イベントオブジェクトの event.info.neighbor から隣人ノードのグループアドレス、 event.info.peerID から隣人ノードの ID を得ることができます。

最後にイベントハンドラーのもう少し具体的なサンプルを。

private function netStatusHandler(event:NetStatusEvent):void {
  switch (event.info.code) {
   // ...
    case "NetGroup.Connect.Success":
      onNetGroupConnect(event.info.group);
      break;
    case "NetGroup.Connect.Rejected":
    case "NetGroup.Connect.Failed":
      doDisconnect(event.info.group);
      break;
    case "NetGroup.Neighbor.Connect":
      onNeighborArrive(event.info.neighbor, event.info.peerID);
      break;
    case "NetGroup.Neighbor.Disconnect":
      onNeighborLeave(event.info.neighbor, event.info.peerID);
      break;
  }
}
 

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/25

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261