2011-01-13 10 views
0

私は、ネット接続の呼び出しを一定の量だけずらしてサーバーに負担をかけることのないクラスを作成しようとしています。そのため、十数個のネットコネクタが動作していません私のコードの周りに。 コール・コマンドを送信できるクラスが必要な場合、クラスはキューにコールを追加し、キューに何かがある場合はそれを1秒ごとに表示します。これは私がこれまで持っていたものです。私はAS3/Flex 3スタジオリモート+キュー

Server.getInstance().call("Fetch.getData", parseAllData, onError) 

public function parseAllData(event:Object):void { 
    trace("Victory!"); 
} 
public function onError(event:Object):void { 
    trace("Error :" + event); 
} 

を呼び出すとき

package net 
{ 
import flash.events.TimerEvent; 
import flash.net.NetConnection; 
import flash.net.Responder; 
import flash.utils.Timer; 


public class Server 
{ 
    private static var gateway:String = "http://localhost/gateway.php"; 
    private static var queue:Vector.<ServerNode> 
    private static var nc:NetConnection; 
    private static var instance:Server = null; 
    private static var res:Responder; 
    private var timer:Timer; 

    public function Server(e:ServerEnforcer) { 
    nc = new NetConnection(); 
    queue = new Vector.<ServerNode>(); 
    timer = new Timer(1000); 
    timer.addEventListener(TimerEvent.TIMER, execCall); 
    timer.start(); 
    } 

    public static function getInstance():Server { 
    if (instance == null) { 
    instance = new Server(new ServerEnforcer); 
    } 
    return instance; 
    } 

    private function execCall(e:Event):void { 
    if (queue.length > 0) { 
    var node:ServerNode = queue.pop(); 
    nc.call(node.method, node.res, node.args); 
    } 
    } 

    public function call(method:String, success:Function, failure:Function, ...args):void { 
    queue.unshift(new ServerNode(method, success, failure, args)); 
    } 

    private function serverFailure(event:Object):void { 
    trace("Server Failure : " + event.description); 
    } 
} 
} 
import flash.net.Responder; 

class ServerEnforcer { } 

class ServerNode { 
public var method:String; 
public var success:Function; 
public var failure:Function; 
public var args:Array; 
public var res:Responder 

public function ServerNode(_method:String, _success:Function, _failure:Function, _args:Array) { 
    method = _method; 
    success = _success; 
    failure = _failure; 
    res = new Responder(success, failure); 
    args = _args; 
} 
} 

今、絶対に何も起こりません。なぜ、これがうまくいかないのか?

+0

正確にはどうなりますか?例えば、デバッグモードでは、プログラムはサーバーに接続されますか?返されたデータは空であり、アプリケーションはまったく実行されますか?少なくともそれほど多くの情報を与えてください。 – Ryan

答えて

0

NetConnectionのインスタンスを作成しましたが、実際にサーバーとの接続を開始していません。言い換えれば

nc.connect(gateway); 

が欠落しています。

このクラスの詳細については、NetConnection documentationを参照してください。

+0

ありがとうございます。それが問題でした。 –