Orion Request
拥有的能力
- 消息压缩,使用 lzma 压缩算法
- 消息加密,使用 RC4 加密算法
- 域名测速器
- 浏览器域名的解析器,包括 hash base64 转码解码
- 简易轮询辅助函数
引用方式
全部引用
;
独立文件引用
/** * main request helper */; /** * simple GateResSpeedTesterClass component */; /** * 用于把 request 的 header base64 ,并且通过 window open 的方式打开,同时提供获取对应的路由的解密函数 */; let windowTargetObj = ;let resultStr = ;let wrapReqHashUrlStr = ;
用法
测速器
const gateResSpeedTester = ; // 测速结束后的 callbackgateResSpeedTester { // result 的结构 result = fastestIdx: numb testRes: idx: url }; // 每一次条链接测速后的 callbackgateResSpeedTester {}; // 设置测速gateResSpeedTester; // 开始测速,会逐一把上述定义的 gateUrls 测速,加入后缀 /sudogateResSpeedTester;
路由解析器
前后端分离的应用,如果需要打开另一个新的应用,可以通过 url 的方式,把 sessionID 和相关的信息通过路由传递
下面模拟场景,应用一通过 openWindowUseHashUrl 打开应用二
// 应用一let urlParamsConfig = url: 'https://ss.com' params: id: '1' req: sessID: 123 username: 'alex' let windowParams = '作为 window.open 的第三个参数,详情参考 w3school';/** * 1. 把 urlParamsConfig 对应的字段转码成 base64,然后打开一个新的窗口二,路由如下 * https://ss.com?id=MQ==&req=eyJzZXNzSUQiOjEyMywidXNlcm5hbWUiOiJhbGV4In0=& */; /** * 在此应用二,使用 decodeHashUrl 可以解码路由,获取对应的参数 * decodeHashUrl 参数说明 * decodeHashUrl(searchStr, isParseToObject); */let id = ;let req = ;
$request 的工作原理以及与服务端交互的过程
外部使用的过程
- 通过请求发起前的 hook 函数,包装出符合对应服务器的请求体结构 「request entity」
- 包装发送请求对象
- 响应并统一处理特定的业务
$request 内部运作流程和原理
- 审阅请求的内容,是否达到需要压缩的长度,默认是 2048 k
- 寻找加密的 key,并且做对应的加密处理
- 发送到指定的远端服务接口
- 收到远端的回应
- 解密
- 解压缩
如果 1 2 5 6 没达到特定的要求,就发送原始结构
详情请参考以下例子
TODO
- 完善测试用例