ピアアシストネットワークへのポスト (RTMFP)

今回は、ピアアシストネットワーク内のポストの実現です。

ポストによるデータ送信

ポストは、ピアアシストネットワークの全てのノードに対してメッセージを送信する機能です。チャットのような多対多の通信に向いた通信手段です。ベストエフォート型の配信のため、メッセージの到着は必ずしも保障されません。

ポストを実行するには、NetGroup クラスの post() メソッドを実行します。

public function post(message:Object):String
 

引数には送信されるオブジェクトを渡します。このオブジェクトに適当な値を設定しておきます。

下はその 1 例です。チャット文字列と一緒にいくつかの送信者側情報を送っています。前回の記事とあわせてお使いください。

// 送信用オブジェクトの生成
var message:Object = new Object;
// データの設定
message.user = userNameText.text;
message.text = chatText.text;
message.sequence = sequenceNumber++;
message.sender = netConnection.nearID;
// post() の実行
_netGroup.post(message);
 

ポストされたデータの受信

次はメッセージの受け取り方です。

ポストされたデータが届くと、NetStatusEvent イベントが発生します。このときのコードは NetGroup.Posting.Notify です。

このコードに対する処理をイベントハンドラー内に記述します。

// NetStatusEvent を処理
private function netStatusHandler(event:NetStatusEvent):void {
  switch(event.info.code){
    // ...
    // ポストデータ到着の通知
    case "NetGroup.Posting.Notify":
      onPosting(event.info.messageID, event.info.message);
      break;
    // ...
  }
}
 

イベントコードが NetGroup.Posting.Notify のときには、送られたオブジェクトを event.info.message から、メッセージ ID を event.info.messageID から取得できます。

以上の処理で、グループ内全てのノードがメッセージを受信できます。1 対1 型と比べるとずいぶん簡単です。1 対1 型であれば、メッセージを送信する全てのノードの ID とセッションを管理する必要がありました。ピアアシストネットワークでは、ネットワークが勝手に全ノードに配信してくれます。

NetGroupInfo クラス

NetGroupInfo クラスは RTMFP 上の通信状況に関する統計情報を持つクラスです。NetGroup.info 属性からアクセスでき、その時点の QoS のスナップショットを知ることができます。

public function get info():NetGroupInfo
 

NetGroupInfo クラスは、NetGroup の各通信機能 (ポスト、オブジェクト複製、ダイレクトルーティング) それぞれについての状況を属性値として保持しています。

ポスト関係は以下の4つがあります。

postingReceiveControlBytesPerSecond : 受信している制御データの秒あたりのバイト数
postingReceiveDataBytesPerSecond : 受信しているポストデータの秒あたりのバイト数
postingSendControlBytesPerSecond : 送信している制御データの秒あたりのバイト数
postingSendDataBytesPerSecond : 送信しているポストデータの秒あたりのバイト数
 

受信メッセージ、送信メッセージそれぞれについて、実際のデータと制御用のデータが秒あたり何バイトこのノードに、あるいはこのノードから送られたかがわかります。

そのほかには、オブジェクト複製によるデータ送受信の状況として以下の 2 つ、

objectReplicationReceiveBytesPerSecond : 受信しているデータの秒あたりのバイト数
objectReplicationSendBytesPerSecond : 送信しているデータの秒あたりのバイト数
 

ダイレクトルーティングによるデータ送受信の状況として以下の 2 つ、

routingReceiveBytesPerSecond : 受信しているメッセージの秒あたりのバイト数
routingSendBytesPerSecond : 送信しているメッセージの秒あたりのバイト数
 

の属性があります。

トラックバック(0)

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

コメントする

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