Open wangl-cc opened 1 month ago
@BoredTape 你可以在这个 issue 写一下你的想法,我其实还没有完全确定要怎么做,我也不是专业的开发,所以欢迎提出任何意见。
@BoredTape 你可以在这个 issue 写一下你的想法,我其实还没有完全确定要怎么做,我也不是专业的开发,所以欢迎提出任何意见。
首先,我这边的想法不是普通用户的想法,可以不用太在意,对于普通用户来说,我的想法是比较离谱的。
1.分开client和server的话,我比较关心server端,server如果可以做成一个crate的话,我这边比较方便嵌入到maabo(实话实说,我觉得我这想法是很离谱的)。
2.server端希望可以提供一个优雅的退出方式。(目前的Terminate应该足够了)
3.希望client和server之间的通信方式是流的,server端在执行一个任务时,会不断输出信息,如:目前的战斗
,干员识别
等。这个时候希望作为client端可以持续接收到server端的输出信息。grpc的流模式或者是websocket是可以做到的。
4.如果3可以实现,那么持续收到的server输出信息中,可以明确一个任务状态,如:DONE
、ERROR
、RUNNING
、PENDING
目前想到的就这些
我觉得的话,client 不一定要负责启动客户端。走 RPC 的话,我觉得如果有可能,能让 MaaBo 支持非自己启动的 server 吗?这样就可以复用 cli 和 core,以及理论上可能的连接远程 server。
我觉得的话,client 不一定要负责启动客户端。走 RPC 的话,我觉得如果有可能,能让 MaaBo 支持非自己启动的 server 吗?这样就可以复用 cli 和 core,以及理论上可能的连接远程 server。
理论上是可以连接远程server的,不过task信息就要做相关的接口获取,现在MaaBo为了跟官方的体验一直,是写死了一份task配置包含:startup、flight等等的任务,这个看你server怎么定,我再适配。至于MaaBo启动server这个,是因为我日后想适配安卓端
现状
当前,maa-cli 执行任务主要包括以下步骤:
问题
上述实现比较简单直接,但是存在以下几个问题:
解决办法
为 maa-cli 引入一个 Server 模式,通过
maa serve
启动。启动后maa-cli
将作为一个 RPC Server, 并监听某一个 Unix 或者 TCP Socket。maa run
、maa startup
等命令将解析任务后向服务器发送请求。maa-cli 在运行任务时如果 server 未启动,将自行启动一个 server,并将其作为守护程序在后台活跃一段时间,然后通过相应的具体实施
RPC API 列表
添加任务
方法名称:
AppendTask
请求:
任务类型以及序列化为 JSON 的字符串。
响应:
其中
0
表示添加失败。修改任务参数
方法名称:
SetParams
请求:
响应:
启动任务
方法名称:
Start
请求:
响应:
停止任务
方法名称:
Stop
请求:
响应:
检查任务是否正在进行
方法名称:
Running
请求:
响应:
关闭 Server
方法名称:
Terminate
请求:
响应: