Browse Source

修复http get重复返回

甘艺伟 1 week ago
parent
commit
78fda29f19

+ 13 - 0
assets/bundle/Icons.meta

@@ -0,0 +1,13 @@
+{
+  "ver": "1.1.3",
+  "uuid": "3c244ed5-c0fe-4808-aa1c-4961c96b53c1",
+  "importer": "folder",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 3 - 1
assets/script/data/model/User/UserModel.ts

@@ -7,6 +7,8 @@ import { UserSex } from "../../const/TypeConst";
 import { UserInfo, UserModelData } from "./UserModelData";
 import { ResLogin } from "../../../shared/user/PtlLogin";
 import { MsgSetName } from "../../../shared/user/server/MsgSetName";
+import EventMng from "../../../manager/EventMng";
+import { NetworkEvent } from "../../const/EventConst";
 
 export default class UserModel extends UserModelData {
 
@@ -26,7 +28,7 @@ export default class UserModel extends UserModelData {
     }
 
     onRegister(): void {
-        GameDataCenter.gameServer.ListenMsg("user/server/SetName", this.onPushSetName);
+        GameDataCenter.gameServer.ListenMsg("user/server/SetName", this.onPushSetName, this);
     }
 
     /*************** 协议推送消息开始 ***********/

+ 2 - 2
assets/script/frameWork/model/IDataModel.ts

@@ -15,10 +15,10 @@ export default class IDataModel {
     constructor(modelName = 'default') {
         this.modelName = modelName;
         this.LoadStorage();
-        EventMng.on(NetworkEvent.NET_MSG_REGISTER, this.onRegister, this);
+        EventMng.on(NetworkEvent.NET_MSG_REGISTER, this.onRegister.bind(this), this);
     }
 
-    onRegister() {
+    protected onRegister() {
 
     }
 

+ 18 - 13
assets/script/network/HttpRequest.ts

@@ -38,15 +38,20 @@ export default class HttpRequest {
         let r = new XMLHttpRequest()
         r.open("GET", path + `?x=${isJiami ? 1 : 0}`, true)
         r.timeout = this.timeoutMs
+        let isTimeOut = false;
+        let isError = false;
         r.onerror = () => {
+            isError = true;
             console.log("发生错误,url=", path)
             callback({})
         }
         r.ontimeout = () => {
+            isTimeOut = true;
             console.log("超时了,url=", path)
             callback({})
         }
         r.onloadend = function () {
+            if (isTimeOut || isError) return;
             let temp = {}
             if (r.status >= 200 && r.status <= 400 && r.readyState == 4) {
                 let txt = gameMethod.xorEncrypt(r.response, isJiami);
@@ -157,21 +162,21 @@ export default class HttpRequest {
                 }
 
                 // try {
-                    if (temp && Object.keys(temp).length > 0) {
-                        if (CC_JSB) {
-                            if (!gameMethod.isEmpty(GameDataCenter.sevBack) && !gameMethod.isEmpty(GameDataCenter.sevBack.switch) && !gameMethod.isEmpty(GameDataCenter.sevBack.switch.clientLog)) {
-                                console.warn("S->C:", JSON.stringify(temp))
-                            }
-                        } else {
-                            if (!gameMethod.isEmpty(GameDataCenter.sevBack) && !gameMethod.isEmpty(GameDataCenter.sevBack.switch) && !gameMethod.isEmpty(GameDataCenter.sevBack.switch.clientLog)) {
-                                console.warn("S->C:", temp)
-                            }
+                if (temp && Object.keys(temp).length > 0) {
+                    if (CC_JSB) {
+                        if (!gameMethod.isEmpty(GameDataCenter.sevBack) && !gameMethod.isEmpty(GameDataCenter.sevBack.switch) && !gameMethod.isEmpty(GameDataCenter.sevBack.switch.clientLog)) {
+                            console.warn("S->C:", JSON.stringify(temp))
+                        }
+                    } else {
+                        if (!gameMethod.isEmpty(GameDataCenter.sevBack) && !gameMethod.isEmpty(GameDataCenter.sevBack.switch) && !gameMethod.isEmpty(GameDataCenter.sevBack.switch.clientLog)) {
+                            console.warn("S->C:", temp)
                         }
-                        //请求成功移除缓存的消息请求
-                        this.errPostMap.Remove(data.url)
-                        this.curPostMap.Remove(data.url)
-                        callback(temp)
                     }
+                    //请求成功移除缓存的消息请求
+                    this.errPostMap.Remove(data.url)
+                    this.curPostMap.Remove(data.url)
+                    callback(temp)
+                }
                 // } catch (error) {
                 //     console.error("服务端回调数据处理时出现异常:", path, error)
                 // }

+ 2 - 2
assets/script/server/GameServerModel.ts

@@ -98,9 +98,9 @@ export class GameServerModel extends IDataModel {
 
 
     /** 监听消息 */
-    public ListenMsg<T extends keyof ServiceType['msg']>(msgName: T | RegExp, callback: Function) {
+    public ListenMsg<T extends keyof ServiceType['msg']>(msgName: T | RegExp, callback: Function, target: any) {
         this.wscRoom.listenMsg(msgName, v => {
-            callback(v);
+            callback.call(target, v);
         });
     }