168 lines
6.6 KiB
TypeScript
168 lines
6.6 KiB
TypeScript
import Common from "../common/Common";
|
||
import UserInfo from "../UserInfo";
|
||
import PlayerData from "../PlayerData";
|
||
import UIManager from "./UIManager";
|
||
import Define from "../common/Define";
|
||
|
||
// Learn TypeScript:
|
||
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/typescript.html
|
||
// - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html
|
||
// - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
|
||
// - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
const {ccclass, property} = cc._decorator;
|
||
|
||
@ccclass
|
||
export default class HttpManager {
|
||
|
||
//返回一个静态的函数
|
||
static instance:HttpManager;
|
||
static getInstance():HttpManager{
|
||
if(HttpManager.instance == null){
|
||
HttpManager.instance = new HttpManager();
|
||
}
|
||
return HttpManager.instance;
|
||
}
|
||
|
||
httpGets(url,callBack){
|
||
let xhr = cc.loader.getXMLHttpRequest();
|
||
xhr.onreadystatechange = function () {
|
||
if (xhr.readyState === 4) {
|
||
if(xhr.status >= 200 && xhr.status < 300){
|
||
var respone = xhr.responseText;
|
||
callBack(respone);
|
||
}
|
||
}
|
||
};
|
||
xhr.open("GET", url, true);
|
||
if (cc.sys.isNative) {
|
||
xhr.setRequestHeader('Access-Control-Allow-Origin','*');
|
||
}
|
||
|
||
xhr.timeout = 5000;// 5 seconds for timeout
|
||
|
||
xhr.send();
|
||
}
|
||
|
||
httpPost (url,params, callback) {
|
||
|
||
//发送合适的请求头信息
|
||
let xhr = cc.loader.getXMLHttpRequest();
|
||
xhr.onreadystatechange = function () {
|
||
// readyState值说明
|
||
// 0:请求未初始化,还没有调用 open()
|
||
// 1:请求已经建立,但是还没有发送,还没有调用 send()
|
||
// 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)
|
||
// 3:请求在处理中;通常响应中已有部分数据可用了,没有全部完成
|
||
// 4:响应已完成;您可以获取并使用服务器的响应
|
||
if(xhr.readyState == 4){
|
||
console.log('xhr.readyState='+xhr.readyState+' xhr.status='+xhr.status);
|
||
if(xhr.status >= 200 && xhr.status < 300){
|
||
var respone = xhr.responseText;
|
||
callback(respone);
|
||
}else{
|
||
callback(-1);
|
||
}
|
||
}
|
||
};
|
||
xhr.open("POST", url, true);
|
||
/*
|
||
当我们创建一个异步对象XMLHttpRequest同时post方式向后台传输数据的时候。
|
||
我们要设置异步对象的xhr.setRequestHeader成员的值为
|
||
XMLHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||
*/
|
||
//设置头
|
||
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
|
||
|
||
xhr.timeout = 5000;// 5 seconds for timeout
|
||
console.log("send")
|
||
xhr.send(params);
|
||
|
||
}
|
||
|
||
//登录微信
|
||
loginWX(code:string){
|
||
let netData = "code="+code
|
||
console.log("开始执行登陆自己的服务器 netData = "+netData);
|
||
HttpManager.getInstance().httpPost(Define.strIp+Define.strPort+"/users/loginWX",netData,function(res){
|
||
console.log("服务器回调")
|
||
console.log(res);
|
||
let data = JSON.parse(res)
|
||
UserInfo.openid = data.openid
|
||
UserInfo.serverMaxScore = data.score
|
||
console.log("UserInfo.openid" + UserInfo.openid)
|
||
console.log("UserInfo.serverMaxScore" + UserInfo.serverMaxScore)
|
||
console.log("UserInfo.maxScore" + UserInfo.maxScore)
|
||
if(UserInfo.maxScore > UserInfo.serverMaxScore){
|
||
HttpManager.getInstance().submitUserInfo();
|
||
}
|
||
if(!Common.isInMainViewLogin){ //在排行榜点击的登录成功
|
||
HttpManager.getInstance().submitUserInfo();
|
||
UIManager.getInstance().refreshView(Define.viewRanking);
|
||
}
|
||
}.bind(this))
|
||
}
|
||
|
||
//上传服务器的信息
|
||
submitUserInfo(){
|
||
//不用上传分数
|
||
console.log("submitUserInfo 00 UserInfo.openid = " + UserInfo.openid)
|
||
if(UserInfo.openid == ""){
|
||
return;
|
||
}
|
||
|
||
console.log("submitUserInfo 00 UserInfo.maxScore = " + UserInfo.maxScore)
|
||
console.log("submitUserInfo 00 UserInfo.serverMaxScore = " + UserInfo.serverMaxScore)
|
||
if(UserInfo.maxScore <= UserInfo.serverMaxScore){
|
||
return
|
||
}
|
||
|
||
UserInfo.serverMaxScore = UserInfo.maxScore;
|
||
let netData = "openid="+UserInfo.openid;
|
||
netData = netData + "&avatarUrl="+UserInfo.avatarUrl;
|
||
netData = netData + "&nickName="+UserInfo.nickName;
|
||
netData = netData + "&score="+UserInfo.maxScore;
|
||
console.log("netData = " + netData)
|
||
HttpManager.getInstance().httpPost(Define.strIp+Define.strPort+"/users/submitInfo",netData,function(res){
|
||
console.log("submitUserInfo 数据成功")
|
||
|
||
}.bind(this))
|
||
}
|
||
//返回排行榜数据
|
||
ranking(callBack:Function){
|
||
HttpManager.getInstance().httpPost(Define.strIp+Define.strPort+"/users/ranking","",function(res){
|
||
console.log("ranking 服务器回调")
|
||
let data = JSON.parse(res)
|
||
console.log("数组的长度 = " + data.length);
|
||
let dataArr:PlayerData[] = [];
|
||
for (var i:number = 0; i < data.length; i++) {
|
||
|
||
let userData:PlayerData = new PlayerData();
|
||
userData.avatarUrl = data[i].avatarUrl
|
||
userData.score = data[i].score
|
||
userData.nickName = data[i].nickName
|
||
userData.isSelf = data[i].openid == UserInfo.openid
|
||
userData.rank = i + 1;
|
||
dataArr.push(userData)
|
||
}
|
||
callBack(dataArr)
|
||
}.bind(this))
|
||
}
|
||
|
||
getGameState(callBack:Function){
|
||
let netData = "gameid="+Define.gameId
|
||
HttpManager.getInstance().httpPost(Define.strIp+Define.strPort+"/users/gameState",netData,function(res){
|
||
let data = JSON.parse(res)
|
||
console.log("ssssssssssssssssss" + data.state)
|
||
if(data.state == "-1"){
|
||
UIManager.getInstance().showView(Define.viewBlack)
|
||
}else{
|
||
callBack();
|
||
}
|
||
}.bind(this))
|
||
}
|
||
}
|