autojs之socketIO

使用场景

与服务器进行socketio通信

效果展示

在这里插入图片描述

socketio概念

WebSocket是HTML5最新提出的规范,虽然主流浏览器都已经支持,但仍然可能有不兼容的情况,为了兼容所有浏览器,给程序员提供一致的编程体验,SocketIO将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口,也就是说,我们在使用SocketIO时,不用担心兼容问题,底层会自动选用最佳的通信方式。因此说,WebSocket是SocketIO的一个子集。

程序设计

结构有两种

  • bs Browser/Server(浏览器/服务器)
  • cs Client/Server(客户机/服务器)

我们是bcs

  • b–>浏览器
  • c–>autojs
  • s–>服务器

b–>浏览器

浏览器负责编辑脚本内容, 编辑好之后发送给服务器

c–>autojs

autojs负责执行脚本, 脚本内容由服务器下发

s–>服务器

服务器负责接收浏览器发过来的内容, 再转发给autojs

代码讲解

浏览器

一个输入框, 一个发送按钮, 点击发送按钮后, 发送数据给服务器

var socket = io();
var form = document.getElementById("form");
var input = document.getElementById("input");
form.addEventListener("submit", function (e) {
  e.preventDefault();
  if (input.value) {
    socket.emit("scriptToServer", input.value);
    input.value = "";
  }
});

autojs

  1. 导入dex, dex中包含socketio依赖
let dexPath = "./classes_merge.dex";
runtime.loadDex(dexPath);
  1. 设置定时器, 目的是不让脚本停止
setInterval(function () {}, 1000)
  1. 创建socket
mSocket = IO.socket("http://192.168.101.4:3000");
  1. 设置监听Socket.EVENT_CONNECT, 用于标识客户端身份
mSocket.on("scriptToMobile", onScriptToMobile);
function onConnect() {
  mSocket.emit("I am autojs", "hello, I am autojs");
}
  1. 设置监听scriptToMobile, 用于获取数据
mSocket.on("scriptToMobile", onScriptToMobile);
function onScriptToMobile(scriptContent) {
  engines.execScript("yashu", scriptContent[0]);
}
  1. 连接服务器
mSocket.connect();

服务器

  1. 显示主页
const app = require("express")();
const http = require("http").Server(app);
const io = require("socket.io")(http);

app.get("/", (req, res) => {
  res.sendFile(__dirname + "/index.html");
});
  1. 设置监听scriptToServer, 并且标识autojs的socket;

​ 收到浏览器发送的数据后, 再转发给autojs

let socketAutojs;
io.on("connection", (socket) => {
  console.log("connection");
  socket.on("I am autojs", (msg) => {
    socketAutojs = socket;
  });
  socket.on("scriptToServer", (msg) => {
    socketAutojs && socketAutojs.emit("scriptToMobile", msg);
  });
});

总结

以上就是bcs结构, 这里只是简单的例子, socket本身还有很多情况需要处理,

  • 身份标识
  • 断线重连
  • 异常处理
  • 数据类型
  • 多人聊天
  • 即时通信
  • 消息必达
  • 连接过多
  • 网络异常
  • 等等等
  • 大家可以看socketio官网, 添加相关代码

参考网址

socketio官网

https://socket.io/

微信公众号 AutoJsPro教程

在这里插入图片描述

## QQ群

747748653

查看完整源码


在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙叔教程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值