Обратный вызов AS3 с сервера не работает - PullRequest
0 голосов
/ 26 января 2012

У меня есть код, который звонит на мой main.acs, а затем передает сообщение всем пользователям. Когда я передаю свое сообщение всем пользователям, функция bcStopStreaming никогда не вызывается.

Код серверной стороны:

application.onConnect = function(client) {
    application.acceptConnection(client);

    client.stopStreaming = function() {
        trace("#stopStreaming# called");
        application.broadcastMsg("bcStopStreaming");
    }

    client.startStreaming = function() {
        trace("#startStreaming# called");
        application.broadcastMsg("bcStreaming");
    }
}

Кнопка подключения:

public function btnConnectHandler(event:MouseEvent):void
{
    nc = new NetConnection();
    nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

    nc.connect("rtmp://"+hostName+"/test");
    nc.client = new Object();

    nc.client.bcStreaming = function(){
        trace("Started Streaming");
    };

    nc.client.bcStopStreaming = function(){
        trace("Stopped Streaming");
    };
}

Кнопка отключения:

public function btnDisconnectHandler(event:MouseEvent):void {
    nc.call("stopStreaming", null);
    nc.close();
}

Ошибка, которую я получаю:

Error #2044: Unhandled AsyncErrorEvent:. text=Error #2095: flash.net.NetConnection was unable to invoke callback bcStreaming. error=ReferenceError: Error #1069: Property bcStreaming not found on test and there is no default value.
at test/btnConnectHandler()

1 Ответ

1 голос
/ 27 января 2012

Ваш клиент настроен неправильно.И, пожалуйста, прекратите использовать встроенные функции.

public function btnConnectHandler(event:MouseEvent):void{
    nc = new NetConnection();
    nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

    nc.connect("rtmp://"+hostName+"/test");
    var myClient = new Object()

    myClient.bcStreaming = this.bcStreaming;
    myClient.bcStopStreaming = this.bcStopStreaming;
    nc.client = myClient;
}
public function bcStreaming(){
    trace("Started Streaming");
}

public function bcStopStreaming(){
    trace("Stopped Streaming");
}

nc.client

...