0

現在、フレックスとFMS(Flash Media Server)を使用して、クライアント側とサーバー側の通信に取り組んでいます。
2秒ごとに接続状態を確認し、クライアントからの応答がない場合は切断する以下のプログラムを実行しようとしています。

ここでエラーが発生します:
ReferenceError:エラー#1069:プロパティのpingがflash.net.NetConnectionに見つからず、デフォルト値がありません。

クライアントサイドコード

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[

    import flash.net.NetConnection;
    public var nc:NetConnection;
    public var res:Responder;
    public function netconn():void
    {
        nc = new NetConnection();
        nc.connect("rtmp://127.0.0.1/ChkConn",user.text);
        nc.addEventListener(NetStatusEvent.NET_STATUS, handle);
    }
    public function handle(event:NetStatusEvent):void
    {
        switch(event.info.code)
        {
            case "NetConnection.Connect.Success":
            status.text="Connected";
            break;
            case "NetConnection.Connect.Failed":
            status.text="Failed";
            break;
            case "NetConnection.Connect.Rejected":
            status.text="Rejected";
            break;
            case "NetConnection.Connect.Disconnect":
            trace("coming");
            status.text="Close";
            break;

        }

    }

    public function pings():void
    {
        trace("a ping call from the server has been received");
    }

    public function disconn():void 
  {
nc.close();
nc.addEventListener(NetStatusEvent.NET_STATUS, handle);
status.text="Disconnected";

}



]]> 
</mx:Script>

<mx:Panel x="224" y="41" width="348" height="118" layout="absolute">
    <mx:TextInput x="84" y="24" id="user"/>
    <mx:Button x="253" y="24" label="Connect" click="netconn()"/>
    <mx:Text x="10" y="26" text="Username"/>
</mx:Panel>
<mx:Text x="235" y="207" text="Status:"/>
<mx:Text x="295" y="207" text="Disconnected" id="status"/>
<mx:Button x="295" y="263" label="Disconnect" click="disconn()"/> 

サーバーサイドコード

 // ActionScript Communications Document
 application.onAppStart=function()
 {
trace("Application Start");
 };
application.onConnect=function(client,name)
{
anyvariable=name;

monitorConnection(client);
if(name!="user1")
{
    application.rejectConnection(client);
    trace(name+" Rejected");
}
else
{
application.acceptConnection(client);
trace(name+" Connect"); 
}

 };

clientPingResponder = function(client) {

this.onResult = function(res) {
    trace("ClientPingResponder.onResult Received: " + res);
    clearInterval(client.cleanupTaskId);
} 

this.onStatus = function(info) {
    trace("ClientPingResponder.onStatus Received: " + info);
}
};
monitorConnection = function(client) {

client.isAlive = function() {
    trace("client.isAlive has been fired");
    client.cleanupTaskId = setInterval(client.dead, 2 * 1000);
    client.call("pings", new clientPingResponder(client));
}

client.dead = function() {
    trace("cleanupTaskId: " + client.cleanupTaskId);
    trace("monitorTaskId: " + client.monitorTaskId);

    clearInterval(client.cleanupTaskId);
    clearInterval(client.monitorTaskId);

    trace("ghost connection has been detected");

    application.disconnect(client);
}

client.monitorTaskId = setInterval(client.isAlive, 7*1000);
trace("detected");
}


application.onDisconnect=function(client)
{
//application.disconnect(client);
trace(anyvariable +" Disconnect");
};

すべてのヘルプが適用されます。ありがとうございました

4

1 に答える 1

1

あなたはのようなものが必要です。

nc.client = this;
于 2012-10-18T19:05:43.177 に答える