games/FullFire/assets/scripts/manager/HttpManager.ts

168 lines
6.6 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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))
}
}