games/ChaoJiJieYaGuan_MaJiang2/assets/Script/Tracking/TrackingManager.ts

63 lines
1.8 KiB
TypeScript

import {genSaltSync, hashSync, setRandomFallback} from 'bcryptjs';
export enum TrackingType {
/** 进入游戏 */
Open = 'open',
/** 临时柜子(观看视频获得柜子) */
TemporaryCabinet = 'temporary-cabinet',
/** 撤回(撤回上次操作) */
Retract = 'retract',
/** 打乱(打乱当前牌局) */
Shuffle = 'shuffle',
/** 柜子(随机消除当前满柜的一个柜子内的麻将) */
Cabinet = 'cabinet',
/** 增加时间 */
AddTime = 'add-time',
/** 体力值 */
HealthPoints = 'health-points'
}
const KEY = `sssssssssk`;
try {
genSaltSync(10);
} catch (e) {
setRandomFallback(function (bytes) {
const randomBytes = new Array(bytes);
for (var i = 0; i < bytes; i++) {
randomBytes[i] = Math.floor(Math.random() * 256);
}
return randomBytes;
});
}
export class TrackingManager {
public static send(type: TrackingType) {
const salt = genSaltSync(10);
const hash = hashSync(KEY, salt);
var xhr = new XMLHttpRequest();
xhr.open("POST", 'https://api.ad.game.06zk.com/app/anchor');
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Key", hash);
xhr.setRequestHeader("Href", location.href);
const formData = `listener=${type}`;
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
const data = JSON.parse(xhr.responseText);
if (data.code === 200) {
console.log(`上报${type}成功`);
} else {
console.log(`上报${type}失败`);
}
}
};
xhr.send(formData);
}
}