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/



相关文章
|
JSON 缓存 NoSQL
Sanic教程: 6.常用的技巧
Sanic教程: 6.常用的技巧
|
5天前
|
人工智能 Go
Golang 搭建 WebSocket 应用(二) - 基本群聊 demo
Golang 搭建 WebSocket 应用(二) - 基本群聊 demo
12 1
|
9月前
|
缓存 JavaScript 前端开发
|
3月前
|
Swift iOS开发 Perl
如何在项目中使用Alamofire和AFNetworking?
如何在项目中使用Alamofire和AFNetworking?
51 3
|
3月前
|
存储 数据库 Android开发
Google的firebase介绍
【2月更文挑战第1天】
|
10月前
|
Dart API
Flutter笔记:发布一个Flutter头像模块 easy_avatar
A plug-in that provides solutions to avatar-related problems in Flutter applications. 在 Flutter 应用程序中提供头像相关问题的解决方案的插件。
97 0
|
JSON JavaScript Linux
Sanic教程: 1.快速开始
Sanic教程: 1.快速开始
|
JSON API 数据格式
简单使用Flutter实现聊天
Flutter 实现聊天的方式有很多种,这里提供一种简单的实现方式
简单使用Flutter实现聊天
|
SQL JavaScript 数据库
autojs使用nodejs调用sqlite数据库
autojs先加载nodejs, 导入SQLiteDatabase, nodejs再去调用SQLiteDatabase
467 0
|
JavaScript
autojs之koa
使用场景 手机上搭建服务器
323 0