工人陷入了沙盒?

时间:2017-10-12 20:32:08

标签: multithreading actionscript-3 flash air

试图找出为什么我可以在主线程上使用我的rest API登录,但不能在worker中登录。所有通信渠道都运行良好,我可以加载它没有问题。但是,当它试图发送一些数据时,它就会挂起。

    [Embed(source="../bin/BGThread.swf", mimeType="application/octet-stream")]      
    private static var BackgroundWorker_ByteClass:Class;
    public static function get BackgroundWorker():ByteArray
    {
        return new BackgroundWorker_ByteClass();
    }

在测试脚本上:

    public function Main() 
    {
        fBCore.init("secrets", "my-firebase-id");
        trace("Init");
        //fBCore.auth.addEventListener(FBAuthEvent.LOGIN_SUCCES, hanldeFBSuccess);
        fBCore.auth.addEventListener(AuthEvent.LOGIN_SUCCES, hanldeFBSuccess);
        fBCore.auth.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);

        fBCore.auth.email_login("admin@admin.admin", "password");

    }

    private function handleIOError(e:IOErrorEvent):void 
    {
        trace("IO error");
        trace(e.text); //Nothing here
    }

    private function hanldeFBSuccess(e:AuthEvent):void 
    {
        trace("Main login success.");
        trace(e.message);//Complete success.
    }

当一个类通过从init传递的Main内部工作者通道触发时:

原始

    private function handleLoginClick(e:MouseEvent):void 
    {
        login_mc.buttonMode = false;
        login_mc.play();
        login_mc.removeEventListener(MouseEvent.CLICK, handleLoginClick);

        log("Logging in as " + email_mc.text_txt.text);
        commandChannel.send([BGThreadCommand.LOGIN, email_mc.text_txt.text, password_mc.text_txt.text]);
    }

工人:

                    ...
                    case BGThreadCommand.LOGIN:
                        log("Logging in with " + message[1] + "::" + message[2]); //Log goes to a progress channel and comes to the main thread reading the outputs successfully.
                        fbCore.auth.email_login(message[1], message[2]);
                        fbCore.auth.addEventListener(AuthEvent.LOGIN_SUCCES, loginSuccess); //Nothing
                        fbCore.auth.addEventListener(IOErrorEvent.IO_ERROR, handleLoginIOError); //Fires
                        break;

Auth Rest Class:https://github.com/sfxworks/FirebaseREST/blob/master/src/net/sfxworks/firebaseREST/Auth.as

这是工作者限制还是安全沙箱问题?我深深地感觉到这是两者中的后者。如果是这样的话,我将如何以一种同样赋予其行为适当权限的方式加载工作者?

1 个答案:

答案 0 :(得分:0)

完全忽略createWorker函数中的giveAppPrivelages属性。抱歉Stackoverflow。有时候,当我在前一天晚上睡觉时(或者在这种情况下没有)睡觉时,我会提出错误的问题。