前言
前期我是使用 NanoHTTPD
来搭建 Android 端的 Http 服务,但其实这个在实际使用过程中是并不高效的,期间还是有很多问题,包括稳定性、并发等问题。
不过最近逛 github 的过程,我发现一个新的框架—— Sekiro。Sekiro 是一个android下的API服务暴露框架,可以用在app逆向、app数据抓取、android群控等场景。同时Sekiro也是目前公开方案唯一稳定的JSRPC框架。
关于 NanoHTTPD 与 Sekiro 的区别,可以阅读 Sekiro 作者,对此问题的解释。传送门:sekiro.virjar.com/sekiro-doc/…
Sekiro 介绍
详细的介绍,直接跳到官网阅读(sekiro.virjar.com/sekiro-doc/… 对于我这边,我主要看中的是他这几点:1、打破内网限制,通过长链接维护和管理每个客户端;2、可以实时获取客户端的状态、转发;3、可以提供群控能力;4、可以搭配 xposed 使用。
Sekiro 原理
Sekiro 是一个长连接方案的调用转发框架,依靠长连接和任意位置的网络设备保持实时通信,他可以实现把任意网络拓扑位置上的设备变成一个服务器。
长连接技术广泛出现在,即时通讯、通用户跨平台数据共享(如微信扫码登录、前端页面开发调试)、直播、手机推送(极光推送、小米推送等)
以上是作者解释,按我的理解是,在每个客户端也就是 client(下同),每个 client 通过长链接(Socket 或 Websocket)与服务器建立连接,服务端维护一份客户端注册列表,然后针对来自 Http 请求进行分发自每个client 身上,每个client处理之后响应。
Sekiro 部署
本文以 CentOS 7.6 64位操作系统的轻量应用服务器为例,免费版没有后台界面。
1.下载代码
在 github.com/virjar/seki… 下载 serkiro-service-demo 目录的代码
2.修改端口
conf/config.properties
配置定制参数,目前只支持配置服务端口 sekiro.port=5620
, 注意如果需要修改端口,记得修改之后,再构建!
conf/logback.xml
可以用来配置日志输出规则
3.构建
在 Linux 或者 mac 上,执行脚本 build_demo_server.sh
,之后得到产出发布压缩包:sekiro-service-demo/target/sekiro-release-demo.zip
(构建过程,可能需要安装 maven,zip 需要解压,然后再进入 bin 目录执行运行步骤 )
如果是 windows,或者不想自己构建,可以在这里直接下载 oss.virjar.com/sekiro/seki…
4.运行
- 安装 java( CentOS 安装 jdk 参考我前面文章)
- 运行启动脚本:
- bin/sekiro.sh : mac or linux
- bin/sekiro.bat : windows
5.验证
127.0.0.1 记得改为公网 ip
- 查看分组列表
http://127.0.0.1:5620/business-demo/groupList
{"data":["test"],"ok":true,"status":0}
- 查看队列状态
http://127.0.0.1:5620/business-demo/clientQueue?group=test
{"data":[],"ok":true,"status":0}
- 调用转发
http://127.0.0.1:5620/business-demo/invoke?group=test&action=test¶m=testparm
{"message":"no device online","ok":false,"status":-1}