From e1dbd84e697445ea0c5f73075f56f97e5849ae53 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期五, 08 三月 2019 14:58:15 +0800 Subject: [PATCH] 6328 【后端】优化代码eval - json只适合字符串序列化,并且尽量用于非中文;建议使用cPickle 的dumps 和loads,协议用2,可支持所有类型,缺点为序列化后不可阅读 --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py index c198f41..456a8e5 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py @@ -29,7 +29,7 @@ import GMShell import traceback -import json +import cPickle def SendMsgToCrossServer(msgType, dataMsg): ## 发送信息到跨服服务器上 @@ -37,7 +37,9 @@ return if not dataMsg: return - sendMsg = json.dumps({"MsgType":msgType, "Data":dataMsg, "ServerGroupID":GameWorld.GetServerGroupID()}, ensure_ascii=False) + + # 协议要用最高级2,可减少长度 + sendMsg = cPickle.dumps({"MsgType":msgType, "Data":dataMsg, "ServerGroupID":GameWorld.GetServerGroupID()}, 2) if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK): GameWorld.ErrLog("服务器未启动好,不允许向跨服服务器发送数据! %s" % (sendMsg)) return @@ -52,7 +54,7 @@ if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK): GameWorld.Log("服务器未启动好,不处理子服信息!") return - msgDict = json.loads(recvMsg) + msgDict = cPickle.loads(recvMsg) msgType = msgDict.get("MsgType", -1) msgData = msgDict.get("Data", "") @@ -157,7 +159,7 @@ return if not dataMsg: return - sendMsg = json.dumps({"MsgType":msgType, "Data":dataMsg}, ensure_ascii=False) + sendMsg = cPickle.dumps({"MsgType":msgType, "Data":dataMsg}, 2) if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK): GameWorld.ErrLog("跨服服务器未启动好,不允许向子服发送数据! serverGroupIDList=%s, sendMsg=%s" % (serverGroupIDList, sendMsg)) return @@ -168,7 +170,7 @@ serverGroupIDList = list(set(serverGroupIDList)) # 去重 #for serverGroupID in serverGroupIDList: # GameWorld.GetGameWorld().SendMergeMsgToClientByGroupID(serverGroupID, sendMsg) - jsonGroupIDInfo = json.dumps(serverGroupIDList, ensure_ascii=False) + jsonGroupIDInfo = cPickle.dumps(serverGroupIDList, 2) GameWorld.GetGameWorld().SendMergeMsgToClientByGroupList(jsonGroupIDInfo, sendMsg) return @@ -183,7 +185,7 @@ GameWorld.Log("服务器未启动好,不处理跨服信息!") return - msgDict = json.loads(dataMsg) + msgDict = cPickle.loads(dataMsg) msgType = msgDict.get("MsgType", -1) msgData = msgDict.get("Data", "") -- Gitblit v1.8.0