autojs之socketIO

简介: 使用场景与服务器进行socketio通信

使用场景


与服务器进行socketio通信


效果展示

微信图片_20220625103021.png


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/


总结


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


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


参考网址


socketio官网


https://socket.io/



相关文章
|
7月前
|
开发工具 git
Playwright系列(6):如何集成到GitHub
Playwright系列(6):如何集成到GitHub
151 0
Playwright系列(6):如何集成到GitHub
|
JSON 缓存 NoSQL
Sanic教程: 6.常用的技巧
Sanic教程: 6.常用的技巧
|
4月前
|
人工智能 网络协议 应用服务中间件
Golang 搭建 WebSocket 应用(一) - 初识 gorilla/websocket
Golang 搭建 WebSocket 应用(一) - 初识 gorilla/websocket
197 1
|
4月前
|
人工智能 Go
Golang 搭建 WebSocket 应用(二) - 基本群聊 demo
Golang 搭建 WebSocket 应用(二) - 基本群聊 demo
45 1
|
4月前
|
人工智能 安全 Go
Golang 搭建 WebSocket 应用(八) - 完整代码
Golang 搭建 WebSocket 应用(八) - 完整代码
44 0
|
5月前
|
监控 Go
golang开发 gorilla websocket的使用
【7月更文挑战第11天】在Golang中, 使用Gorilla WebSocket库可轻松实现WebSocket通信。安装库: `go get github.com/gorilla/websocket`。创建连接: `websocket.DefaultDialer.Dial("ws://url", nil)`。发送消息: `conn.WriteMessage(websocket.TextMessage, []byte("Hello"))`。接收消息: 循环调用`conn.ReadMessage()`。适用于实时聊天或股票行情等场景。
135 0
|
7月前
|
安全 API Python
FastAPI入门指南
FastAPI是基于Python类型提示的高性能Web框架,用于构建现代API。它提供高性能、直观的编码体验,内置自动文档生成(支持OpenAPI)、数据验证和安全特性。安装FastAPI使用`pip install fastapi`,可选`uvicorn`作为服务器。简单示例展示如何定义路由和处理函数。通过Pydantic进行数据验证,`Depends`处理依赖。使用`uvicorn main:app --reload`启动应用。FastAPI简化API开发,适合高效构建API应用。5月更文挑战第21天
222 1
|
缓存 JavaScript 前端开发
|
JavaScript
autojs之koa
使用场景 手机上搭建服务器
357 0
|
Android开发
autojs Jsoup 使用例子
牙叔教程 简单易懂
461 0