forked from sin365/AxibugEmuOnline
干掉,客户端发送和产生Protobuff以及序列化时的byte[]分配,使用Byte[]池化租用和复用
This commit is contained in:
parent
148684f8aa
commit
a4b39f36bb
@ -55,7 +55,7 @@ namespace AxiReplay
|
||||
mRemoteForwardCount = (int)ServerForwardCount;
|
||||
mNetReplayQueue.Enqueue(inputData);
|
||||
#if UNITY_EDITOR
|
||||
Debug.Log($"InData=>{inputData.FrameStartID} QCount = >{mNetReplayQueue.Count}");
|
||||
//Debug.Log($"InData=>{inputData.FrameStartID} QCount = >{mNetReplayQueue.Count}");
|
||||
#endif
|
||||
mRemoteFrameIdx = inputData.FrameStartID;
|
||||
if (!bNetInit)
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
using AxibugEmuOnline.Client.Network;
|
||||
using Google.Protobuf;
|
||||
using HaoYueNet.ClientNetwork;
|
||||
using System;
|
||||
|
||||
namespace AxibugEmuOnline.Client.Common
|
||||
@ -7,6 +8,18 @@ namespace AxibugEmuOnline.Client.Common
|
||||
public static class ProtoBufHelper
|
||||
{
|
||||
private static ProtobufferMsgPool _msgPool = new ProtobufferMsgPool();
|
||||
|
||||
public static void RentSerizlizeData(IMessage msg, out byte[] data, out int usedlength)
|
||||
{
|
||||
usedlength = msg.CalculateSize();
|
||||
data = BytesArrayPool.RentBuffer(usedlength);
|
||||
msg.WriteTo(data.AsSpan(0, usedlength));
|
||||
}
|
||||
public static void ReturnSerizlizeData(byte[] data)
|
||||
{
|
||||
BytesArrayPool.ReturnBuffer(data);
|
||||
}
|
||||
|
||||
public static byte[] Serizlize(IMessage msg)
|
||||
{
|
||||
return msg.ToByteArray();
|
||||
|
||||
@ -76,7 +76,7 @@ namespace AxibugEmuOnline.Client
|
||||
if (IsNetPlay) //skip frame handle
|
||||
{
|
||||
var skipFrameCount = App.roomMgr.netReplay.GetSkipFrameCount();
|
||||
if (skipFrameCount > 0) App.log.Debug($"SKIP FRAME : {skipFrameCount} ,CF:{App.roomMgr.netReplay.mCurrClientFrameIdx},RFIdx:{App.roomMgr.netReplay.mRemoteFrameIdx},RForward:{App.roomMgr.netReplay.mRemoteForwardCount} ,queue:{App.roomMgr.netReplay.mNetReplayQueue.Count}");
|
||||
//if (skipFrameCount > 0) App.log.Debug($"SKIP FRAME : {skipFrameCount} ,CF:{App.roomMgr.netReplay.mCurrClientFrameIdx},RFIdx:{App.roomMgr.netReplay.mRemoteFrameIdx},RForward:{App.roomMgr.netReplay.mRemoteForwardCount} ,queue:{App.roomMgr.netReplay.mNetReplayQueue.Count}");
|
||||
for (var i = 0; i < skipFrameCount; i++)
|
||||
{
|
||||
if (!TryPushEmulatorFrame()) break;
|
||||
|
||||
@ -8,6 +8,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
{
|
||||
public class AppChat
|
||||
{
|
||||
Protobuf_ChatMsg _Protobuf_ChatMsg = new Protobuf_ChatMsg();
|
||||
public AppChat()
|
||||
{
|
||||
NetMsg.Instance.RegNetMsgEvent<Protobuf_ChatMsg_RESP>((int)CommandID.CmdChatmsg, RecvChatMsg);
|
||||
@ -15,11 +16,8 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
|
||||
public void SendChatMsg(string ChatMsg)
|
||||
{
|
||||
Protobuf_ChatMsg msg = new Protobuf_ChatMsg()
|
||||
{
|
||||
ChatMsg = ChatMsg,
|
||||
};
|
||||
App.network.SendToServer((int)CommandID.CmdChatmsg, ProtoBufHelper.Serizlize(msg));
|
||||
_Protobuf_ChatMsg.ChatMsg = ChatMsg;
|
||||
App.network.SendToServer((int)CommandID.CmdChatmsg, _Protobuf_ChatMsg);
|
||||
}
|
||||
|
||||
public void RecvChatMsg(Protobuf_ChatMsg_RESP msg)
|
||||
|
||||
@ -11,7 +11,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
public class AppLogin
|
||||
{
|
||||
static string LastLoginGuid = "";
|
||||
|
||||
static Protobuf_Login _Protobuf_Login = new Protobuf_Login();
|
||||
public AppLogin()
|
||||
{
|
||||
NetMsg.Instance.RegNetMsgEvent<Protobuf_Login_RESP>((int)CommandID.CmdLogin, RecvLoginMsg);
|
||||
@ -57,14 +57,11 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
break;
|
||||
}
|
||||
|
||||
Protobuf_Login msg = new Protobuf_Login()
|
||||
{
|
||||
LoginType = LoginType.UseDevice,
|
||||
DeviceStr = Initer.dev_UUID,
|
||||
DeviceType = devType,
|
||||
};
|
||||
_Protobuf_Login.LoginType = LoginType.UseDevice;
|
||||
_Protobuf_Login.DeviceStr = Initer.dev_UUID;
|
||||
_Protobuf_Login.DeviceType = devType;
|
||||
|
||||
App.network.SendToServer((int)CommandID.CmdLogin, ProtoBufHelper.Serizlize(msg));
|
||||
App.network.SendToServer((int)CommandID.CmdLogin, _Protobuf_Login);
|
||||
}
|
||||
|
||||
public void RecvLoginMsg(Protobuf_Login_RESP msg)
|
||||
|
||||
@ -39,6 +39,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
Protobuf_Room_Player_Ready _Protobuf_Room_Player_Ready = new Protobuf_Room_Player_Ready();
|
||||
Protobuf_Room_SinglePlayerInputData _Protobuf_Room_SinglePlayerInputData = new Protobuf_Room_SinglePlayerInputData();
|
||||
Protobuf_Screnn_Frame _Protobuf_Screnn_Frame = new Protobuf_Screnn_Frame();
|
||||
Protobuf_Room_HostPlayer_UpdateStateRaw _Protobuf_Room_HostPlayer_UpdateStateRaw = new Protobuf_Room_HostPlayer_UpdateStateRaw();
|
||||
public AppRoom()
|
||||
{
|
||||
NetMsg.Instance.RegNetMsgEvent<Protobuf_Room_List_RESP>((int)CommandID.CmdRoomList, RecvGetRoomList);
|
||||
@ -146,7 +147,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
public void SendGetRoomList()
|
||||
{
|
||||
App.log.Info("拉取房间列表");
|
||||
App.network.SendToServer((int)CommandID.CmdRoomList, ProtoBufHelper.Serizlize(_Protobuf_Room_List));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomList, _Protobuf_Room_List);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -195,7 +196,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
{
|
||||
_Protobuf_Room_Get_Screen.RoomID = RoomID;
|
||||
App.log.Info($"获取房间画面快照");
|
||||
App.network.SendToServer((int)CommandID.CmdRoomGetScreen, ProtoBufHelper.Serizlize(_Protobuf_Room_Get_Screen));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomGetScreen, _Protobuf_Room_Get_Screen);
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取单个房间画面
|
||||
@ -220,7 +221,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
_Protobuf_Room_Create.GameRomID = GameRomID;
|
||||
_Protobuf_Room_Create.GameRomHash = GameRomHash;
|
||||
App.log.Info($"创建房间");
|
||||
App.network.SendToServer((int)CommandID.CmdRoomCreate, ProtoBufHelper.Serizlize(_Protobuf_Room_Create));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomCreate, _Protobuf_Room_Create);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -247,7 +248,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
{
|
||||
_Protobuf_Room_Join.RoomID = RoomID;
|
||||
App.log.Info($"加入房间");
|
||||
App.network.SendToServer((int)CommandID.CmdRoomJoin, ProtoBufHelper.Serizlize(_Protobuf_Room_Join));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomJoin, _Protobuf_Room_Join);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -275,7 +276,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
return;
|
||||
_Protobuf_Room_Leave.RoomID = mineRoomMiniInfo.RoomID;
|
||||
App.log.Info($"LeavnRoom");
|
||||
App.network.SendToServer((int)CommandID.CmdRoomLeave, ProtoBufHelper.Serizlize(_Protobuf_Room_Leave));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomLeave, _Protobuf_Room_Leave);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -438,7 +439,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
}
|
||||
|
||||
App.log.Info($"SendChangePlaySlotIdxWithJoyIdx");
|
||||
App.network.SendToServer((int)CommandID.CmdRoomChangePlayerWithJoy, ProtoBufHelper.Serizlize(_Protobuf_Room_Change_PlaySlotWithJoy));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomChangePlayerWithJoy, _Protobuf_Room_Change_PlaySlotWithJoy);
|
||||
}
|
||||
/// <summary>
|
||||
/// 上报即时存档
|
||||
@ -448,12 +449,10 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
{
|
||||
//压缩
|
||||
byte[] compressRawData = Helper.CompressByteArray(RawData);
|
||||
Protobuf_Room_HostPlayer_UpdateStateRaw msg = new Protobuf_Room_HostPlayer_UpdateStateRaw()
|
||||
{
|
||||
LoadStateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData)
|
||||
};
|
||||
_Protobuf_Room_HostPlayer_UpdateStateRaw.LoadStateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData);
|
||||
App.log.Info($"上报即时存档数据 原数据大小:{RawData.Length},压缩后;{compressRawData.Length}");
|
||||
App.network.SendToServer((int)CommandID.CmdRoomHostPlayerUpdateStateRaw, ProtoBufHelper.Serizlize(msg));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomHostPlayerUpdateStateRaw, _Protobuf_Room_HostPlayer_UpdateStateRaw);
|
||||
_Protobuf_Room_HostPlayer_UpdateStateRaw.Reset();
|
||||
}
|
||||
|
||||
void RecvRoom_WaitStep(Protobuf_Room_WaitStep_RESP msg)
|
||||
@ -491,7 +490,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
_Protobuf_Room_Player_Ready.LoadStateNeedTimeUs = LoadStateNeedTimeUs;
|
||||
_Protobuf_Room_Player_Ready.VideoFrameShowNeedTimeUs = VideoFrameShowNeedTimeUs;
|
||||
_Protobuf_Room_Player_Ready.AudioFramePlayNeedTimeUs = AudioFramePlayNeedTimeUs;
|
||||
App.network.SendToServer((int)CommandID.CmdRoomPlayerReady, ProtoBufHelper.Serizlize(_Protobuf_Room_Player_Ready));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomPlayerReady, _Protobuf_Room_Player_Ready);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -501,7 +500,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
{
|
||||
_Protobuf_Room_SinglePlayerInputData.FrameID = FrameID;
|
||||
_Protobuf_Room_SinglePlayerInputData.InputData = InputData;
|
||||
App.network.SendToServer((int)CommandID.CmdRoomSingelPlayerInput, ProtoBufHelper.Serizlize(_Protobuf_Room_SinglePlayerInputData));
|
||||
App.network.SendToServer((int)CommandID.CmdRoomSingelPlayerInput, _Protobuf_Room_SinglePlayerInputData);
|
||||
}
|
||||
|
||||
ulong TestAllData = 0;
|
||||
@ -521,7 +520,8 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
byte[] comData = Helper.CompressByteArray(RenderBuffer);
|
||||
_Protobuf_Screnn_Frame.FrameID = 0;
|
||||
_Protobuf_Screnn_Frame.RawBitmap = ByteString.CopyFrom(comData);
|
||||
App.network.SendToServer((int)CommandID.CmdScreen, ProtoBufHelper.Serizlize(_Protobuf_Screnn_Frame));
|
||||
App.network.SendToServer((int)CommandID.CmdScreen, _Protobuf_Screnn_Frame);
|
||||
_Protobuf_Screnn_Frame.Reset();
|
||||
}
|
||||
|
||||
public void OnScreen(Protobuf_Screnn_Frame msg)
|
||||
|
||||
@ -9,6 +9,8 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
{
|
||||
public class AppShare
|
||||
{
|
||||
static Protobuf_Game_Mark _Protobuf_Game_Mark = new Protobuf_Game_Mark();
|
||||
static Protobuf_GameScreen_Img_Upload _Protobuf_GameScreen_Img_Upload = new Protobuf_GameScreen_Img_Upload();
|
||||
public AppShare()
|
||||
{
|
||||
NetMsg.Instance.RegNetMsgEvent<Protobuf_Game_Mark_RESP>((int)CommandID.CmdGameMark, RecvGameStar);
|
||||
@ -22,13 +24,10 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
/// <param name="Motion">[0]取消收藏[1]收藏</param>
|
||||
public void SendGameStar(int RomID, int Motion)
|
||||
{
|
||||
Protobuf_Game_Mark req = new Protobuf_Game_Mark()
|
||||
{
|
||||
Motion = Motion,
|
||||
RomID = RomID,
|
||||
};
|
||||
_Protobuf_Game_Mark.Motion = Motion;
|
||||
_Protobuf_Game_Mark.RomID = RomID;
|
||||
App.log.Info($"SendGameStar");
|
||||
App.network.SendToServer((int)CommandID.CmdGameMark, ProtoBufHelper.Serizlize(req));
|
||||
App.network.SendToServer((int)CommandID.CmdGameMark, _Protobuf_Game_Mark);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -50,16 +49,14 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
//压缩
|
||||
byte[] compressImgData = Helper.CompressByteArray(SavImgData);
|
||||
|
||||
Protobuf_GameScreen_Img_Upload req = new Protobuf_GameScreen_Img_Upload()
|
||||
{
|
||||
RomID = RomID,
|
||||
SavImg = Google.Protobuf.ByteString.CopyFrom(compressImgData),
|
||||
};
|
||||
_Protobuf_GameScreen_Img_Upload.RomID = RomID;
|
||||
_Protobuf_GameScreen_Img_Upload.SavImg = Google.Protobuf.ByteString.CopyFrom(compressImgData);
|
||||
|
||||
App.log.Info($"SendUpLoadGameScreenCover");
|
||||
App.log.Info($"上传截图 原数据大小:{SavImgData.Length},压缩后;{compressImgData.Length}");
|
||||
|
||||
App.network.SendToServer((int)CommandID.CmdGamescreenImgUpload, ProtoBufHelper.Serizlize(req));
|
||||
App.network.SendToServer((int)CommandID.CmdGamescreenImgUpload, _Protobuf_GameScreen_Img_Upload);
|
||||
_Protobuf_GameScreen_Img_Upload.Reset();
|
||||
}
|
||||
|
||||
private void RecvGamescreenImgUpload(Protobuf_GameScreen_Img_Upload_RESP msg)
|
||||
|
||||
@ -18,6 +18,10 @@ namespace AxibugEmuOnline.Client
|
||||
public delegate void OnUploadedSavDataHandle(int romID, int slotIndex, Protobuf_Mine_GameSavInfo savInfo);
|
||||
public event OnUploadedSavDataHandle OnUploadedSavData;
|
||||
|
||||
static Protobuf_Mine_DelGameSav _Protobuf_Mine_DelGameSav = new Protobuf_Mine_DelGameSav();
|
||||
static Protobuf_Mine_UpLoadGameSav _Protobuf_Mine_UpLoadGameSav = new Protobuf_Mine_UpLoadGameSav();
|
||||
static Protobuf_Mine_GetGameSavList _Protobuf_Mine_GetGameSavList = new Protobuf_Mine_GetGameSavList();
|
||||
|
||||
public SavCloudApi()
|
||||
{
|
||||
NetMsg.Instance.RegNetMsgEvent<Protobuf_Mine_GetGameSavList_RESP>((int)CommandID.CmdGamesavGetGameSavList, RecvGetGameSavList);
|
||||
@ -33,13 +37,9 @@ namespace AxibugEmuOnline.Client
|
||||
public void SendGetGameSavList(int RomID)
|
||||
{
|
||||
if (m_fetchingRomIDs.Contains(RomID)) return;
|
||||
|
||||
Protobuf_Mine_GetGameSavList req = new Protobuf_Mine_GetGameSavList()
|
||||
{
|
||||
RomID = RomID,
|
||||
};
|
||||
_Protobuf_Mine_GetGameSavList.RomID = RomID;
|
||||
App.log.Info($"SendGetGameSavList");
|
||||
App.network.SendToServer((int)CommandID.CmdGamesavGetGameSavList, ProtoBufHelper.Serizlize(req));
|
||||
App.network.SendToServer((int)CommandID.CmdGamesavGetGameSavList, _Protobuf_Mine_GetGameSavList);
|
||||
}
|
||||
|
||||
void RecvGetGameSavList(Protobuf_Mine_GetGameSavList_RESP msg)
|
||||
@ -62,13 +62,10 @@ namespace AxibugEmuOnline.Client
|
||||
/// <param name="SavDataIdx"></param>
|
||||
public void SendDelGameSavList(int RomID, int SavDataIdx)
|
||||
{
|
||||
Protobuf_Mine_DelGameSav req = new Protobuf_Mine_DelGameSav()
|
||||
{
|
||||
RomID = RomID,
|
||||
SavDataIdx = SavDataIdx
|
||||
};
|
||||
_Protobuf_Mine_DelGameSav.RomID = RomID;
|
||||
_Protobuf_Mine_DelGameSav.SavDataIdx = SavDataIdx;
|
||||
App.log.Info($"SendDelGameSavList");
|
||||
App.network.SendToServer((int)CommandID.CmdGamesavDelGameSav, ProtoBufHelper.Serizlize(req));
|
||||
App.network.SendToServer((int)CommandID.CmdGamesavDelGameSav, _Protobuf_Mine_DelGameSav);
|
||||
}
|
||||
|
||||
void RecvDelGameSavList(Protobuf_Mine_DelGameSav_RESP msg)
|
||||
@ -89,20 +86,18 @@ namespace AxibugEmuOnline.Client
|
||||
//压缩
|
||||
byte[] compressImgData = Helper.CompressByteArray(SavImgData);
|
||||
|
||||
Protobuf_Mine_UpLoadGameSav req = new Protobuf_Mine_UpLoadGameSav()
|
||||
{
|
||||
RomID = RomID,
|
||||
SavDataIdx = SavDataIdx,
|
||||
StateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData),
|
||||
SavImg = Google.Protobuf.ByteString.CopyFrom(compressImgData),
|
||||
Sequence = (int)sequence
|
||||
};
|
||||
_Protobuf_Mine_UpLoadGameSav.RomID = RomID;
|
||||
_Protobuf_Mine_UpLoadGameSav.SavDataIdx = SavDataIdx;
|
||||
_Protobuf_Mine_UpLoadGameSav.StateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData);
|
||||
_Protobuf_Mine_UpLoadGameSav.SavImg = Google.Protobuf.ByteString.CopyFrom(compressImgData);
|
||||
_Protobuf_Mine_UpLoadGameSav.Sequence = (int)sequence;
|
||||
|
||||
App.log.Info($"SendDelGameSavList");
|
||||
App.log.Info($"上传即时存档数据 原数据大小:{RawData.Length},压缩后;{compressRawData.Length}");
|
||||
App.log.Info($"上传截图 原数据大小:{SavImgData.Length},压缩后;{compressImgData.Length}");
|
||||
|
||||
App.network.SendToServer((int)CommandID.CmdGamesavUploadGameSav, ProtoBufHelper.Serizlize(req));
|
||||
App.network.SendToServer((int)CommandID.CmdGamesavUploadGameSav, _Protobuf_Mine_UpLoadGameSav);
|
||||
_Protobuf_Mine_UpLoadGameSav.Reset();
|
||||
}
|
||||
|
||||
void RecvUpLoadGameSav(Protobuf_Mine_UpLoadGameSav_RESP msg)
|
||||
|
||||
@ -43,6 +43,10 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
public string Token => userdata.IsLoggedIn ? userdata.Token : string.Empty;
|
||||
Dictionary<long, UserDataBase> DictUID2User = new Dictionary<long, UserDataBase>();
|
||||
public int OnlinePlayerCount => DictUID2User.Count;
|
||||
|
||||
static Protobuf_UserList _Protobuf_UserList = new Protobuf_UserList();
|
||||
static Protobuf_Modify_NickName _Protobuf_Modify_NickName = new Protobuf_Modify_NickName();
|
||||
|
||||
public void InitMainUserData(string UName, long UID, string token)
|
||||
{
|
||||
userdata.NickName = UName;
|
||||
@ -147,10 +151,7 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
/// </summary>
|
||||
public void Send_GetUserList()
|
||||
{
|
||||
Protobuf_UserList msg = new Protobuf_UserList()
|
||||
{
|
||||
};
|
||||
App.network.SendToServer((int)CommandID.CmdUserOnlinelist, ProtoBufHelper.Serizlize(msg));
|
||||
App.network.SendToServer((int)CommandID.CmdUserOnlinelist, _Protobuf_UserList);
|
||||
}
|
||||
|
||||
public void RecvUserOnlinelist(Protobuf_UserList_RESP msg)
|
||||
@ -179,18 +180,14 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
{
|
||||
RemoveUser(msg.UID);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送修改昵称请求
|
||||
/// </summary>
|
||||
/// <param name="NickName"></param>
|
||||
public void Send_ModifyNickName(string NickName)
|
||||
{
|
||||
Protobuf_Modify_NickName msg = new Protobuf_Modify_NickName()
|
||||
{
|
||||
NickName = NickName
|
||||
};
|
||||
App.network.SendToServer((int)CommandID.CmdModifyNickName, ProtoBufHelper.Serizlize(msg));
|
||||
_Protobuf_Modify_NickName.NickName = NickName;
|
||||
App.network.SendToServer((int)CommandID.CmdModifyNickName, _Protobuf_Modify_NickName);
|
||||
}
|
||||
|
||||
void RecvModifyNickName(Protobuf_Modify_NickName_RESP msg)
|
||||
@ -212,6 +209,5 @@ namespace AxibugEmuOnline.Client.Manager
|
||||
App.roomMgr.ChangeCurrRoomPlayerName(msg.UID);
|
||||
Eventer.Instance.PostEvent(EEvent.OnOtherUserInfoUpdate, msg.UID);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,6 +24,9 @@ namespace AxibugEmuOnline.Client
|
||||
public double MaxNetDelay;
|
||||
public List<double> NetDelays = new List<double>();
|
||||
public const int NetAveDelayCount = 3;
|
||||
|
||||
static Protobuf_Ping _Protobuf_Ping = new Protobuf_Ping();
|
||||
static Protobuf_Pong _Protobuf_Pong = new Protobuf_Pong();
|
||||
private void Awake()
|
||||
{
|
||||
NetMsg.Instance.RegNetMsgEvent<Protobuf_Ping>((int)CommandID.CmdPing, OnCmdPing);
|
||||
@ -89,22 +92,14 @@ namespace AxibugEmuOnline.Client
|
||||
int randSeed = new System.Random().Next(0, int.MaxValue);
|
||||
LastPingSeed = randSeed;
|
||||
LastStartPingTime = App.tick.sw.Elapsed;
|
||||
Protobuf_Ping resp = new Protobuf_Ping()
|
||||
{
|
||||
Seed = randSeed,
|
||||
};
|
||||
App.network.SendToServer((int)CommandID.CmdPing, ProtoBufHelper.Serizlize(resp));
|
||||
_Protobuf_Ping.Seed = randSeed;
|
||||
App.network.SendToServer((int)CommandID.CmdPing, _Protobuf_Ping);
|
||||
}
|
||||
|
||||
|
||||
public void OnCmdPing(Protobuf_Ping msg)
|
||||
{
|
||||
//App.log.Debug($"OnCmdPing");
|
||||
Protobuf_Pong resp = new Protobuf_Pong()
|
||||
{
|
||||
Seed = msg.Seed,
|
||||
};
|
||||
App.network.SendToServer((int)CommandID.CmdPong, ProtoBufHelper.Serizlize(resp));
|
||||
_Protobuf_Pong.Seed = msg.Seed;
|
||||
App.network.SendToServer((int)CommandID.CmdPong, _Protobuf_Pong);
|
||||
}
|
||||
|
||||
public void OnCmdPong(Protobuf_Pong msg)
|
||||
|
||||
@ -3,7 +3,6 @@ using AxibugProtobuf;
|
||||
using Google.Protobuf;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using AxibugEmuOnline.Client.Common;
|
||||
|
||||
namespace AxibugEmuOnline.Client.Network
|
||||
@ -189,6 +188,10 @@ namespace AxibugEmuOnline.Client.Network
|
||||
App.log.Error("错误:" + errMsg);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
//if (cmd > (int)CommandID.CmdPong)
|
||||
//App.log.Info("[NET]<color=yellow>" + cmd + "|" + (CommandID)cmd + "| ERRCODE:" + ERRCODE + "| length:" + arg.Length + "</color>");
|
||||
#endif
|
||||
if (err > ErrorCode.ErrorOk)
|
||||
return;
|
||||
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
using AxibugEmuOnline.Client.ClientCore;
|
||||
using AxibugEmuOnline.Client.Common;
|
||||
using AxibugEmuOnline.Client.Event;
|
||||
using AxibugProtobuf;
|
||||
using Google.Protobuf;
|
||||
using HaoYueNet.ClientNetwork;
|
||||
using System;
|
||||
using System.Net.Sockets;
|
||||
@ -88,7 +90,6 @@ namespace AxibugEmuOnline.Client.Network
|
||||
/// <param name="data">业务数据</param>
|
||||
void GetDataCallBack(int CMDID, int ERRCODE, byte[] data)
|
||||
{
|
||||
//NetworkDeBugLog("收到消息 CMDID =>" + CMDID + " ERRCODE =>" + ERRCODE + " 数据长度=>" + data.Length);
|
||||
try
|
||||
{
|
||||
//抛出网络数据
|
||||
@ -164,5 +165,37 @@ namespace AxibugEmuOnline.Client.Network
|
||||
return false;
|
||||
return socket.Connected;
|
||||
}
|
||||
|
||||
public void SendToServer(int CmdID, IMessage msg)
|
||||
{
|
||||
|
||||
//SendToServer(CmdID, ProtoBufHelper.Serizlize(msg));
|
||||
//return;
|
||||
|
||||
// byte[] data2 = ProtoBufHelper.Serizlize(msg);
|
||||
// base.SendToServerWithLength(CmdID, ref data2, data2.Length);
|
||||
//#if UNITY_EDITOR
|
||||
// if (CmdID > (int)CommandID.CmdPong)
|
||||
// NetworkDeBugLog("[NET]<color=cyan>" + CmdID + "|" + (CommandID)CmdID + "| alllen:" + data2.Length + " usedlength:" + data2 + "</color>");
|
||||
//#endif
|
||||
// return;
|
||||
|
||||
ProtoBufHelper.RentSerizlizeData(msg, out byte[] data, out int usedlength);
|
||||
base.SendToServerWithLength(CmdID, ref data, usedlength);
|
||||
#if UNITY_EDITOR
|
||||
//if (CmdID > (int)CommandID.CmdPong)
|
||||
//NetworkDeBugLog("[NET]<color=cyan>" + CmdID + "|" + (CommandID)CmdID + "| alllen:"+ data.Length + " usedlength:" + usedlength + "</color>");
|
||||
#endif
|
||||
ProtoBufHelper.ReturnSerizlizeData(data);
|
||||
}
|
||||
|
||||
public new void SendToServer(int CmdID, byte[] data)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
//if(CmdID > (int)CommandID.CmdPong)
|
||||
//NetworkDeBugLog("[NET]<color=cyan>" + CmdID + "|" + (CommandID)CmdID + "| length:" + data.Length + "</color>");
|
||||
#endif
|
||||
base.SendToServer(CmdID, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user