流程
- 用户安装浏览器插件/游戏厂商提供 游戏链接
- 发送到Unicloud接口,Unicloud处理信息
- UniCloud通过GoEasy的WS接口向多台云主机通信,通知上号
重连机制
- 云主机检测游戏是否断开连接/游戏厂商提供接口信息
- 万一自动断开游戏失效,给用户一个手动断线的按钮(WS任务)
适配一个游戏需要的步骤
- 获取它的gamehostURL,写一个脚本将所有的Iframe的url爬下来,然后用之前的本地破解的游戏窗口打开,看是否能登录上去,能则说明就是这个游戏的gamehostURL
- 还是最优先和云端数据匹配,匹配不到再走下面
- 获取所有的iframe,如果这个页面尺寸是最大的那就是它了,如果有多个尺寸一致的,选最里面一层的iframe就是游戏节点
- 将这个url打开后就可以直接访问canvas节点了,还是遍历所有取最大,跟上面逻辑一样,就能确定出canvas节点
- 获取这个游戏断线的请求规则,部署到云主机中
- 云主机中的断线验证规则要动态更新,做一个动态的button或者随时能调用的函数来更改匹配逻辑到最新版本
const 断线=false
while(!断线){
let 断线匹配逻辑=[]
if(ws通知云主机断线匹配逻辑有更新){
断线匹配逻辑=下载最新的断线匹配逻辑
}
//遍历当前请求
if(当前请求匹配上了断线逻辑){
断线=true
}
}
- 备选,通过插件检测用户上线-》云主机断线,用户下线-》云主机上线
GoEasy 连接笔记
- 下载配置好SDK
- 订阅(susbcribe)
* 客户端向GoEasy订阅一个channel
* channel就是任意定义的一个字符串(最好是英文)
3. 发布(publish)
* 向GoEasy的channel发布消息,可以是客户端,也可以是服务端(rest接口)
4. 接收消息
* 一旦有了publish后GoEasy就会向subscriber传递消息(deliver)