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;