autojs websocket 核心代码,tiktok云控技术

autojs websocket 核心示例代码,云控技术

//初始化方法
function recordInit(scriptName){
        //let ipInfoJson = getIP()
        // let ip = ipInfoJson.cip
        // let location = ipInfoJson.cname
        let deviceIMEI = '',deviceBrand='',deviceModel='',AndroidVer='',deviceWH='',deviceBoard='',deviceMac='',AndroidId=''
        try {
            deviceBrand = device.brand;//制造厂商
            deviceBoard = device.board;//主板
            deviceMac = device.getMacAddress()//Mac地址
            AndroidId = device.getAndroidId()//安卓ID
 
            data={
                "category":1,
                "uuid":"55421",
                "device_code":"086",
                "configure":"5656E",
                "owner":"1",
                "model":device.model,
                "release": device.release,
                "memory":~~(device.getAvailMem()/1024/1024)+'MB',
                "imei":device.getIMEI(),
                "width":device.width,
                "height":device.height,
                "battery":device.getBattery()
            }
            var token=setting.storage.get('access_token')
            var res = http.postJson(setting.api_domain+'device/?access-token='+token,data);
            if(res.statusCode==200){
                log('已添加')
                return true
            }
            else if(res.statusCode==201){
                log("已更新")
                return true
            }else{
                log("添加设备失败")
                return false
            }
 
        } catch (error) {
            log(error)
            return false;
        }
    }
 
var ws = {
    run:function(){
        setting.ws_status =true;
        console.log('使用软件的过程中,请确保您的网络流畅~')
        console.log('Websocket连接中..')
        setting.ws = web.newWebSocket(setting.websocket_domain, {
            //eventThread: 'this'
        });
 
        //ws监听
        setting.ws.on("open", (res) => {
            log("WebSocket连接成功!");
            //心跳检测
 
            let hi={'type':'connect','uuid':'033246','device_code':'003'}
            setting.ws.send(JSON.stringify(hi));
 
            setting.heartbeat = threads.start(function(){
                setInterval(function(){
                    console.log('发送心跳包');
                }, 10000);
            });
 
        }).on("failure", (err, res) => {
            // 关闭心跳包线程
            setting.heartbeat.interrupt();
            //console.error(err);
            setting.ws_status =false;
            // 断线重连
            if(setting.allow_ws_re){
                console.error('与总控的连接已断开,五秒后重连...');
                sleep(5000)
                this.run()
            }
            // 改变“连接总控”颜色
            ui.run(function(){
                ui.start.setBackgroundColor(colors.parseColor("#d6d7d7"))
                ui.start.text("连接总控")
                ui.start.setTextColor(colors.parseColor("#000000"))
            });
            //alert("提示","ws通道已断开!");
            //exit();
        }).on("closing", (code, reason) => {
            log("WebSocket关闭中");
        }).on("text", (text) => {
            log("收到消息")
 
            try {
 
                let data = JSON.parse(text);
                switch(data.type){
                    case 'init':
                        console.log('等待总控响应...')
                        var ret=recordInit('init')
                        console.error("初始化返回:"+ret )
                        if(ret){
                            toastLog('成功与总控建立连接')
                            console.info('大功告成,您可以在总控端控制该终端了~');
                            // 改变"连接总控"颜色
                            ui.run(function(){
                                // 如果在主界面
                                if(ui.start){
                                    if(setting.sys_name == "闲鱼助手"){
                                        ui.start.setBackgroundColor(colors.parseColor("#009688"))
                                    }else{
                                        ui.start.setTextColor(colors.parseColor("#ffffff"))
                                        ui.start.setBackgroundColor(colors.parseColor(setting.baozeng_colour))
                                    }
                                    ui.start.text("已连接")
                                }
 
                            });
                            device.vibrate(500);//震动700毫秒
                        }else{
                            setting.ws_status =false;
                            let err_msg = r['msg']
                            alert(err_msg);console.error(err_msg)
                        }
                        break;
 
                    case 'start':
                        log('接到任务:',json.task)
                        let sid = json.sid
                        stopEngine()
                        try {try {if(main_thread) main_thread.interrupt()} catch (error) {   }} catch (error) {   }
                        if(getScriptConfig(sid)){
                            send_Log('[开始运行]'+json.task,true)
                            main_thread = threads.start(function () {
                                doTask(sid)
                            });
                        }else{
                            send_Log('[启动失败]设备获取脚本配置失败!',true)
                        }
                        break;
 
                    case 'web_to_aj_command':
                        //执行web发来的命令
                        //console.warn(data.task_type + '('+data.task_id+')');
                        threads.start(function () {
                            eval(data.task_type + '('+data.task_id+')');
                            console.log('等待总控命令中....')
                        });
                        break;
 
                    case 'exec_command':
 
                        break;
                    case 'NO':
                        log(data.msg)
                        toast(data.msg)
                        setting.ws.closed();
                        break;
 
                    case 'web_to_aj_chat_message':
                        //web_to_aj_chat_message
                        console.log(data)
                        // console.log('web_to_aj_chat_message')
                        setting.message.push({name:data['name'],message:data['message']})
                        break;
                    default:
                        console.log('defautl')
                        console.log(data)
                }
 
            } catch (error) {
                log("解析返回来的数据错误")
                log(error)
            }
        }).on("closed", (code, reason) => {
            //log("WebSocket已关闭: code = %d, reason = %s", code, reason);
            setting.ws_status =false;
            alert("提示","ws通道已断开2");
            console.error('ws通道已断开2')
            //exit();
        });
    }
}
 
// 函数导出
module.exports = ws;

 

赞 (2)