P2Pを利用している状態で直接接続していないプレーヤー同士でメッセージのやりとりができるか確認してみました。
うちのネット接続の場合、ポートフォワードを利用している状況でも、内部からglobalIPアドレスにて接続できなくなっています。
よって、PC上で2つFlashを立ち上げた状態で通信ができないことを確認してから、VPNをつかった外部PC上のFlashを経由したら動作することを確認できれば
要件をみたしたことになります。
■次の図のような、内部同士の接続は、不可能ですが・・・
■次の図のような、外部のプレーヤーをはさめば、動作が可能である・・・
結論からいうと、メッセージやりとりもNetStreamの動画データやりとりも可能でした。
ではまずメッセージのやりとりから・・・
プログラムは前回の検証のものとほぼ同等です。
/**
* netGroupを作成する。
*/
private function setupGroup():void {
var groupSpec:GroupSpecifier = new GroupSpecifier("akasatana");
groupSpec.serverChannelEnabled = true;
groupSpec.postingEnabled = true;
_ng = new NetGroup(_nc, groupSpec.groupspecWithAuthorizations());
log.info(groupSpec.groupspecWithAuthorizations());
_ng.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
}
/**
* テスト用、ボタンクリックで動作させます。
*/
private var count:int = 0;
public function test(id:String):void {
log.info("クリックイベント");
var netGroupMessage:Object = new Object;
log.info(_nc.nearID);
netGroupMessage.sender = _nc.nearID;
netGroupMessage.user = "aiueo";
netGroupMessage.text = "kakikukeko";
netGroupMessage.sequence = ++ count;
_ng.post(netGroupMessage);
log.info("クリックイベント送信完了?");
}
postingEnabledを有効にした状態でNetGroupに接続して、好きなタイミングでNetGroup宛にデータをpostする。
これだけです。
この状態で動作を確認すると、別のPC上のプレーヤーをはさむと、MessageのNotifyイベントがとんできていました。
2:直接接続していないクライアントFlash同士のメッセージのやりとりができればうれしい。
これは、やりとりが可能であるということになります。
最終更新:2011年02月06日 15:58