HTTPS.ts 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. const { ccclass, property } = cc._decorator;
  2. @ccclass
  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 = null;
  12. // private _URL = "http://120.79.5.67:7000";
  13. //得到现在的时间
  14. private GetNowTime(): string {
  15. const date = new Date(cc.sys.now());
  16. const hours = date.getHours();
  17. const minutes = date.getMinutes();
  18. const seconds = date.getSeconds();
  19. return `${hours}:${minutes}:${seconds} `;
  20. }
  21. post(action: string, data: object | string): Promise<any> {
  22. if (CC_DEBUG) {
  23. cc.error(this.GetNowTime() + "发送消息 >>>>>> :" + action, data);
  24. // cc.error(this.GetNowTime() + "消息内容 >>>>>> :", data);
  25. }
  26. const promise: Promise<any> = new Promise((resolve, reject) => {
  27. var timeoutKey: any;
  28. var retry = 5;//失败重试次数
  29. const send = () => {
  30. const httpRequest = new XMLHttpRequest();
  31. const method = 'POST'
  32. httpRequest.onreadystatechange = (event: Event): void => {
  33. const readyState = httpRequest.readyState;
  34. if (readyState !== 4) return;
  35. if (!timeoutKey) return;//已通知超时,之后收到数据后也不处理
  36. clearTimeout(timeoutKey);
  37. timeoutKey = null;
  38. const requestStatus = httpRequest.status;
  39. if (requestStatus >= 200 && requestStatus < 400) {
  40. let resp = JSON.parse(httpRequest.responseText);
  41. resolve(resp);
  42. if (CC_DEBUG) {
  43. cc.error(this.GetNowTime() + `收到消息(${retry}) >>>>>> :` + action, resp);
  44. // cc.error(httpRequest.responseText);
  45. }
  46. }
  47. else if (retry-- > 0) send();
  48. else reject(new Error('全部超时'));
  49. }
  50. httpRequest.open(method, Url + action, true);
  51. // httpRequest.setRequestHeader("Access-Control-Allow-Origin", "*");
  52. httpRequest.setRequestHeader("Content-Type", "application/json;charset=utf-8");
  53. httpRequest.setRequestHeader("Authorization", this.token != null ? this.token : "");
  54. var text = typeof (data) == "string" ? data : JSON.stringify(data);
  55. data ? httpRequest.send(text) : httpRequest.send();
  56. timeoutKey = setTimeout(() => {
  57. timeoutKey = null;
  58. httpRequest.abort();
  59. reject(new Error(`Timeout`));
  60. }, 12000);//超时时间(毫秒)
  61. }
  62. send();
  63. })
  64. return promise;
  65. }
  66. get(action: string): Promise<any> {
  67. if (CC_DEBUG) {
  68. cc.error(this.GetNowTime() + "发送消息 >>>>>> :" + action);
  69. }
  70. const promise: Promise<any> = new Promise((resolve, reject) => {
  71. var timeoutKey: any;
  72. var retry = 5;//失败重试次数
  73. const send = () => {
  74. const httpRequest = new XMLHttpRequest();
  75. const method = 'GET'
  76. httpRequest.onreadystatechange = (event: Event): void => {
  77. const readyState = httpRequest.readyState;
  78. if (readyState !== 4) return;
  79. if (!timeoutKey) return;//已通知超时,之后收到数据后也不处理
  80. clearTimeout(timeoutKey);
  81. timeoutKey = null;
  82. const requestStatus = httpRequest.status;
  83. if (requestStatus >= 200 && requestStatus < 400) {
  84. let resp = JSON.parse(httpRequest.responseText);
  85. resolve(resp);
  86. if (CC_DEBUG) {
  87. cc.error(this.GetNowTime() + `收到消息(${retry}) >>>>>> :` + action, resp);
  88. }
  89. }
  90. else if (retry-- > 0) send();
  91. else reject(new Error('全部超时'));
  92. }
  93. httpRequest.open(method, action, true);
  94. httpRequest.setRequestHeader("Authorization", this.token != null ? this.token : "");
  95. httpRequest.send();
  96. timeoutKey = setTimeout(() => {
  97. timeoutKey = null;
  98. httpRequest.abort();
  99. reject(new Error(`Timeout`));
  100. }, 12000);//超时时间(毫秒)
  101. }
  102. send();
  103. })
  104. return promise;
  105. }
  106. }
  107. export var Url = "http://yx.dashenwangluo.com";
  108. export var NetGet = {
  109. /**获取任务配置 */
  110. Task: Url + "/v1/task/config",//token: 用户token
  111. }
  112. export var NetPost = {
  113. /**发送验证码 */
  114. SendIphoneCode: "/v1/user/send_code",
  115. /**手机号登录 */
  116. IphoneLogin: "/v1/user/login",
  117. /**完成任务 */
  118. complete: "/v1/task/complete",// task_type: 任务类型(ad_watch/sign_in)
  119. }