私は2つのswfsを持っています:
- アプリケーションswf
- rtmfpレプリケーションテクノロジーを使用してデータをロードできるp2pクライアントswf(Cirrusサービスを介して)
主なアイデアは、特定のドメインに1つのp2pローダーを配置し、各ドメインの許可を何度も要求することなくp2pネットワークで機能できるようにすることです。たとえば、次のようになります。
- アプリケーション1(http://domain1.com/app.swf)|
- アプリケーション2(http://domain2.com/app.swf)| <-> p2pデータローダー(http://domainp2p.com/p2pcli.swf)
- アプリケーションN(http://domainN.com/app.swf)|
p2pクライアントはリクエストによってバイナリデータをロードします。コンテンツは本当に重要ではないと私は信じています。
したがって、次のクラス(app.swf)を使用してp2pclientswfをロードします
public class ClientLoader {
// .. some code
public function load(cb:Function, err:Function):void
{
_cb = cb;
_err = err;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoaded);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _onIoError);
loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _onSecurityError);
// note that context has neither application domain nor security domain
loader.load(new URLRequest(_url), new LoaderContext());
}
private function _onLoaded(e:Event):void
{
trace("Loaded. Connecting to the p2p network...");
_client = e.target.content;
_client.addEventListener(Event.CONNECT, _onClientReady);
_client.connect();
}
private function _onClientReady(e:Event):void
{
_cb(_client);
}
}
}
p2pclient自体(p2pcli.swf):
public class P2P extends Sprite
{
public function SqP2P() {
Security.allowDomain("*");
}
public function connect():void
{
_connection = new NetConnection();
_connection.addEventListener(NetStatusEvent.NET_STATUS, _netStatus);
_connection.connect(CIRRUS_ADDRESS, CIRRUS_KEY);
// after successful connect this method called
_loadGroup();
}
private method _loadGroup():void
{
var spec:GroupSpecifier = new GroupSpecifier(_name);
spec.serverChannelEnabled = true;
spec.objectReplicationEnabled = true;
_group = new NetGroup(connection, spec.groupspecWithAuthorizations());
_group.addEventListener(NetStatusEvent.NET_STATUS, _netStatus);
}
private function _netStatus(event:NetStatusEvent):void
{
trace("NetStatusEvent:", event.info.code);
}
}
しかし、Flash Playerはセキュリティセッションを無視し、app.swfが属するドメインのポップアップ設定を保存しようとしているようですが、p2pcli.swfドメインのポップアップ設定は保存していません。なぜ?!
私はまったく同じコードを持っていますが、p2pcli.swfはローカル共有オブジェクトにデータを格納するswfに置き換えられ、すべてのdomain1-2-N.comがそれにアクセスできます。
何か案は?
私は知っている、私の英語はがらくたです:(