2

私は2つのswfsを持っています:

  1. アプリケーションswf
  2. rtmfpレプリケーションテクノロジーを使用してデータをロードできるp2pクライアントswf(Cirrusサービスを介して)

主なアイデアは、特定のドメインに1つのp2pローダーを配置し、各ドメインの許可を何度も要求することなくp2pネットワークで機能できるようにすることです。たとえば、次のようになります。

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ドメインのポップアップ設定は保存していません。なぜ?!

p2p設定ボックス

私はまったく同じコードを持っていますが、p2pcli.swfはローカル共有オブジェクトにデータを格納するswfに置き換えられ、すべてのdomain1-2-N.comがそれにアクセスできます。

何か案は?

私は知っている、私の英語はがらくたです:(

4

1 に答える 1

1

私は本当に完全にはわかりませんが、それが役立つ場合に備えて、私の答えをそこに投げます。

このようなセキュリティメッセージの一般的な目的に基づいて、そのダイアログが表示されないようにすることができるかどうかは完全にはわかりません。場合によっては、ピアアシストネットワークが一部の人にとってセキュリティリスクになる可能性があると確信しています(とにかく、帯域幅を使用しています)。その通知をオンまたはオフにする設定は、ユーザー側のFlash設定ダイアログで行われます( Windows 7のコントロールパネル...)、つまり、Flashプラットフォームに本質的に組み込まれていることを示唆しています。

もちろん、私はAdobe AIRのスペシャリストなので、完全に間違っている可能性があります...あなたのプロジェクトのために、私は心から願っています!

そして、記録のために、あなたの英語はほぼ完璧でした。わかりやすくするために1つの段落を微調整しましたが、それ以外の場合は注意してください。:D

于 2012-03-22T19:48:45.993 に答える