HTTPS.ts 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import { sys } from "cc";
  2. import { DEBUG } from "cc/env";
  3. export default class HTTPS {
  4. private static _instance = null;
  5. public static get Instance(): HTTPS {
  6. if (this._instance == null) {
  7. this._instance = new HTTPS();
  8. }
  9. return this._instance;
  10. }
  11. token = 'ffb5293a-37ce-4123-a074-df4b1450a2b6';
  12. //得到现在的时间
  13. private GetNowTime(): string {
  14. const date = new Date(sys.now());
  15. const hours = date.getHours();
  16. const minutes = date.getMinutes();
  17. const seconds = date.getSeconds();
  18. return `${hours}:${minutes}:${seconds} `;
  19. }
  20. post(action: string, data: object | string): Promise<any> {
  21. if (DEBUG) {
  22. console.log(this.GetNowTime() + "发送消息 >>>>>> :" + action, data);
  23. }
  24. const promise: Promise<any> = new Promise((resolve, reject) => {
  25. var timeoutKey: number;
  26. var retry = 5;//失败重试次数
  27. const send = () => {
  28. const httpRequest = new XMLHttpRequest();
  29. const method = 'POST'
  30. httpRequest.onreadystatechange = (event: Event): void => {
  31. const readyState = httpRequest.readyState;
  32. if (readyState !== 4) return;
  33. if (!timeoutKey) return;//已通知超时,之后收到数据后也不处理
  34. clearTimeout(timeoutKey);
  35. timeoutKey = null;
  36. const requestStatus = httpRequest.status;
  37. if (requestStatus >= 200 && requestStatus < 400) {
  38. let resp = JSON.parse(httpRequest.responseText);
  39. resolve(resp);
  40. if (DEBUG) {
  41. console.log(this.GetNowTime() + `收到消息(${retry}) >>>>>> :` + action, resp);
  42. }
  43. }
  44. else if (retry-- > 0) send();
  45. else reject(new Error('全部超时'));
  46. }
  47. httpRequest.open(method, Url + action, true);
  48. // httpRequest.setRequestHeader("Access-Control-Allow-Origin", "*");
  49. httpRequest.setRequestHeader("Content-Type", "application/json;charset=utf-8");
  50. httpRequest.setRequestHeader("token", this.token != null ? this.token : "");
  51. var text = typeof (data) == "string" ? data : JSON.stringify(data);
  52. data ? httpRequest.send(text) : httpRequest.send();
  53. timeoutKey = setTimeout(() => {
  54. timeoutKey = null;
  55. httpRequest.abort();
  56. reject(new Error(`Timeout`));
  57. }, 12000);//超时时间(毫秒)
  58. }
  59. send();
  60. })
  61. return promise;
  62. }
  63. get(action: string): Promise<any> {
  64. if (DEBUG) {
  65. console.log(this.GetNowTime() + "发送消息 >>>>>> :" + action);
  66. }
  67. const promise: Promise<any> = new Promise((resolve, reject) => {
  68. var timeoutKey: number;
  69. var retry = 5;//失败重试次数
  70. const send = () => {
  71. const httpRequest = new XMLHttpRequest();
  72. const method = 'GET'
  73. httpRequest.onreadystatechange = (event: Event): void => {
  74. const readyState = httpRequest.readyState;
  75. if (readyState !== 4) return;
  76. if (!timeoutKey) return;//已通知超时,之后收到数据后也不处理
  77. clearTimeout(timeoutKey);
  78. timeoutKey = null;
  79. const requestStatus = httpRequest.status;
  80. if (requestStatus >= 200 && requestStatus < 400) {
  81. let resp = JSON.parse(httpRequest.responseText);
  82. resolve(resp);
  83. if (DEBUG) {
  84. console.log(this.GetNowTime() + `收到消息(${retry}) >>>>>> :` + action, resp);
  85. }
  86. }
  87. else if (retry-- > 0) send();
  88. else reject(new Error('全部超时'));
  89. }
  90. httpRequest.open(method, action, true);
  91. httpRequest.setRequestHeader("token", this.token != null ? this.token : "");
  92. httpRequest.send();
  93. timeoutKey = setTimeout(() => {
  94. timeoutKey = null;
  95. httpRequest.abort();
  96. reject(new Error(`Timeout`));
  97. }, 12000);//超时时间(毫秒)
  98. }
  99. send();
  100. })
  101. return promise;
  102. }
  103. }
  104. export var Url = "https://meowtea2.maox.com.cn";
  105. export var NetGet = {
  106. /**获取地图数据 */
  107. Map: Url + "/api/tokenpass/Login/Map",
  108. }
  109. export var NetPost = {
  110. /**登录 */
  111. Login: "/api/user/third",
  112. UpdateScore: "/api/user/UpdateScore",
  113. ranking_list: "/api/user/ranking_list",
  114. }