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;
autojs websocket 核心示例代码,云控技术的更多相关文章
- Python如何爬取实时变化的WebSocket数据【华为云技术分享】
一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...
- C# WebSocket 服务端示例代码 + HTML5客户端示例代码
WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System.Linq; using System. ...
- SkylineGlobe TerraExplorer Pro 7.0 Web 控件版 第一行示例代码
SkylineGlobe TerraExplorer Pro 7.0 是原生的64位应用程序,在Web端用插件方式开发的第一行示例代码如下: 常规代码,需要IE64位: <!DOCTYPE ht ...
- 【荐】JavaScript图片放大技术(放大镜)示例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码
目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...
- 工控图表控件ProEssentials创建3D柱状图示例代码
使用ProEssentials可以创建3D柱状图,柱状图的形式包括线框.实体和阴影. 类似于Graph control,3D柱状图只需要YData. Subsets定义沿z轴有多少行,Points定义 ...
- GitHub C 和 C++ 开源库的清单(含示例代码)
内容包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++标准库,包括了STL容器,算法和函数等. C++ Standard Library:是一系列类 ...
- 灵雀云Istio技术实践专题整理
Istio技术实践专题(1) Service Mesh Istio 基本概念和架构基础 Istio被称作Kubernetes的最佳云原生拍档.从今天起,我们推出"Istio技术实践" ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
随机推荐
- div 内元素的垂直居中
小主今天偷点懒利用上班时间整理一下 div 内元素的居中(不论垂直还是水平通用)问题的解决方法: 本文的中心是利用 css 中的 display属性:通常的方便的是使用 Flex/Grid 属性,今天 ...
- lseek系统调用
文件的随机读写.目前为止,文件都是顺序访问.读写都是从当前文件的偏移位置开始,然后文件偏移值自动的增加到刚好超出读或者写结束的位置是它为下一次作好准备.在linux中有文件偏移.使得随机访问变得简单, ...
- one-wallhaven 一个壁纸程序
one-wallhaven 一款基于 Electron 壁纸客户端 . gitee:https://gitee.com/ml13/wallhaven-electron github:https://g ...
- Fiddler的一系列学习瞎记2(没有章法的笔记)
前言 不适合小白,因为很多需要小白来掌握的东西我都没有写,就是补充自己还不会的东西,所以,有些同僚看起来可能感觉不是很清楚. 正文: 瞎记2-什么是代理服务器 1.web代理服务器,是在客户端和服务器 ...
- oracle 11.2.0.4静默安装
oracle 11.2.0.4静默安装 1.安装包 1.1.上传安装包 xshell可用rz命令,选择安装包. mobaxterm可用左侧栏上传功能. 2.安装准备 2.1.关闭防火墙.SELinux ...
- 使用Java将XSL和XML文件输出为HTML(XSL学习笔记二)
XSL 指扩展样式表语言(EXtensible Stylesheet Language),前面一篇博客介绍了使用XSL即可直接将XML输出为HTML片段被浏览器解析,但是这样在web应用中浏览器的解析 ...
- Weblogic CVE-2020-2551漏洞复现&CS实战利用
Weblogic CVE-2020-2551漏洞复现 Weblogic IIOP 反序列化 漏洞原理 https://www.anquanke.com/post/id/199227#h3-7 http ...
- xctf攻防世界——crackme writeup
感谢xctf提供学习平台 https://adworld.xctf.org.cn crackme有壳,脱壳部分见文章: https://www.cnblogs.com/hongren/p/126332 ...
- 公式编辑器MathType之入门攻略
许多时候在工作.学习,尤其是写文献时,需要在Word文档中输入较多公式,简单的公式或符号,可以借助Word自带的公式编辑器,但是,遇到较多并且复杂的公式,该如何高效解决呢?其实可以借助一款强大的公式编 ...
- 如何能够将MathType工具栏放大?
作为专业的公式编辑器,MathType受到了很多用户的青睐,因为借助它可以快速编写出想要的各种数学公式.但是有的用户发现MathType工具栏中的符号有一些小,那么为了方便使用,能不能将工具栏放大呢? ...