export default class CombatArena { private static Instance: CombatArena = null; public static getInstance(): CombatArena { if (this.Instance === null || this.Instance === undefined) { this.Instance = new CombatArena(); } return this.Instance; } isNullOrEmpty(text) { if (text == undefined || text == null || text == "") { return true; } return false; } sendGetHttpRequest( url: string, onSuccesCallBack: (response: any) => void, onErrorCallBack: (mes: string) => void ) { cc.log("sendGetHttpRequest url: " + url); let xhr = new XMLHttpRequest(); xhr.onreadystatechange = () => { if (xhr.readyState == 4) { // cc.log("sendGetHttpRequest onreadystatechange responseText: " + xhr.responseText); if (xhr.status >= 200 && xhr.status < 400) { // cc.log("sendGetHttpRequest onreadystatechange responseText: " + xhr.responseText); let response = xhr.responseText; onSuccesCallBack(response); } } } xhr.onerror = () => { let errtext = "Không thể kết nối đến máy chủ, xin hãy thử lại."; cc.log("sendGetHttpRequest onerror responseText: " + xhr.responseText); if (!this.isNullOrEmpty(xhr.responseText)) { let obj = null; try { obj = JSON.parse(xhr.responseText); } catch (error) { } if ( obj !== null && obj !== undefined && !this.isNullOrEmpty(obj.msg) ) { errtext = obj.msg; } } onErrorCallBack(errtext); }; xhr.ontimeout = () => { onErrorCallBack("Không thể kết nối đến máy chủ, xin hãy thử lại."); }; xhr.timeout = 30000; xhr.open("GET", url, true); xhr.send(); } sendGetHttpRequestNoJson( url: string, onSuccesCallBack: (response: any) => void, onErrorCallBack: (mes: string) => void ) { let xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status >= 200 && xhr.status < 400) { let response = xhr.responseText; onSuccesCallBack(response); } else { onErrorCallBack("Không thể kết nối đến máy chủ, xin hãy thử lại."); } } }; xhr.onerror = () => { let errtext = "Không thể kết nối đến máy chủ, xin hãy thử lại."; if (!this.isNullOrEmpty(xhr.responseText)) { let obj = null; try { obj = JSON.parse(xhr.responseText); } catch (error) { } if ( obj !== null && obj !== undefined && !this.isNullOrEmpty(obj.msg) ) { errtext = obj.msg; } } onErrorCallBack(errtext); }; xhr.ontimeout = () => { onErrorCallBack("Không thể kết nối đến máy chủ, xin hãy thử lại."); }; xhr.open("GET", url, true); xhr.send(); } sendGetHttpRequestWithToken(url: string, onSuccesCallBack: (response: any) => void, onErrorCallBack: (mes: string) => void) { let xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status >= 200 && xhr.status < 400) { let response = xhr.responseText; onSuccesCallBack(JSON.parse(response)); } else { onErrorCallBack("Không thể kết nối đến máy chủ, xin hãy thử lại."); } } }; xhr.onerror = () => { let errtext = "Không thể kết nối đến máy chủ, xin hãy thử lại."; if (!this.isNullOrEmpty(xhr.responseText)) { let obj = null; try { obj = JSON.parse(xhr.responseText); } catch (error) { } if (obj !== null && obj !== undefined && !this.isNullOrEmpty(obj.msg)) { errtext = obj.msg; } } onErrorCallBack(errtext); }; xhr.ontimeout = () => { onErrorCallBack("Không thể kết nối đến máy chủ, xin hãy thử lại."); }; // cc.log("session_id: " + GamePlayManager.getInstance().session_id); // cc.log("token: " + GamePlayManager.getInstance().token); // xhr.setRequestHeader("X-TOKEN", GamePlayManager.getInstance().session_id); xhr.open("GET", url, true); xhr.send(); } sendPostHttpRequest( url: string, body: string, onSuccesCallBack: (response: any) => void, onErrorCallBack: (mes: string) => void, isSetXToken = true, isShow400Error = false ) { let xhr = cc.loader.getXMLHttpRequest(); xhr.onreadystatechange = () => { if (xhr.readyState == 4) { if (xhr.status >= 200 && xhr.status < 400) { // cc.log(xhr.responseText); let response = xhr.responseText; try { let obj = JSON.parse(response); onSuccesCallBack(obj); } catch (error) { cc.log("sendPostHttpRequest error: ", error); cc.log("sendPostHttpRequest response: " + response); onErrorCallBack(response); } } else { let errtext = "Không thể kết nối đến máy chủ, xin hãy thử lại."; // cc.log("asddasadsdasdasadsdas " + xhr.responseText ); if (!this.isNullOrEmpty(xhr.responseText)) { // cc.log(xhr.responseText) try { let obj = JSON.parse(xhr.responseText); if (obj !== null && obj !== undefined && !this.isNullOrEmpty(obj.msg)) { errtext = obj.msg; } else if (obj !== null && obj !== undefined && !this.isNullOrEmpty(obj.message)) { errtext = obj.message; } } catch (e) { if (isShow400Error === true && xhr.status === 400) errtext = xhr.responseText; } } onErrorCallBack(errtext); } } }; xhr.onerror = () => { let errtext = "Không thể kết nối đến máy chủ, xin hãy thử lại."; cc.log(JSON.stringify(xhr.responseText)); if (!this.isNullOrEmpty(xhr.responseText)) { let obj = null; try { obj = JSON.parse(xhr.responseText); } catch (error) { } if ( obj !== null && obj !== undefined && !this.isNullOrEmpty(obj.msg) ) { errtext = obj.msg; } } onErrorCallBack(errtext); }; xhr.ontimeout = () => { onErrorCallBack("Không thể kết nối đến máy chủ, xin hãy thử lại."); }; xhr.open("POST", url, true); // if (!this.isNullOrEmpty(GamePlayManager.getInstance().session_id)) { // if (isSetXToken === true) // xhr.setRequestHeader("X-TOKEN", GamePlayManager.getInstance().session_id); // xhr.setRequestHeader("Content-Type", "application/json"); // } xhr.send(body); } requestImageURL(url: string, onSuccesCallBack: (response: any) => void, onErrorCallBack: (mes: string) => void) { cc.log("requestImageURL url: " + url); let xhr = new XMLHttpRequest(); xhr.onreadystatechange = () => { // cc.log("xhr.readyState: " + xhr.readyState + " | xhr.status: " + xhr.status); if (xhr.readyState == 4) { // cc.log("sendGetHttpRequest onreadystatechange responseText: " + xhr.responseText); if (xhr.status >= 200 && xhr.status < 400) { // cc.log("sendGetHttpRequest onreadystatechange responseText: " + xhr.responseText); onSuccesCallBack(new Uint8Array(xhr.response)); } else { if (onErrorCallBack != null) { onErrorCallBack(xhr.response); } } } } xhr.onerror = () => { let errtext = "Không thể kết nối đến máy chủ, xin hãy thử lại."; cc.log("sendGetHttpRequest onerror responseText: " + xhr.responseText); if (!this.isNullOrEmpty(xhr.responseText)) { let obj = null; try { obj = JSON.parse(xhr.responseText); } catch (error) { } if (obj !== null && obj !== undefined && !this.isNullOrEmpty(obj.msg) ) { errtext = obj.msg; } } onErrorCallBack(errtext); }; xhr.ontimeout = () => { onErrorCallBack("Không thể kết nối đến máy chủ, xin hãy thử lại."); }; xhr.open("GET", url, true); xhr.responseType = "arraybuffer"; xhr.timeout = 30000; xhr.send(); } }