网络建立连接断开连接,回到主线程处理
This commit is contained in:
parent
306199dba8
commit
0d3024521c
@ -2,10 +2,7 @@
|
|||||||
using nn.fs;
|
using nn.fs;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using nn.fs;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
|
|
||||||
public class AxiNSIO
|
public class AxiNSIO
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using Sony.Vita.Dialog;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace AxiIO
|
namespace AxiIO
|
||||||
{
|
{
|
||||||
|
|||||||
@ -70,7 +70,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
SavDataIdx = SavDataIdx
|
SavDataIdx = SavDataIdx
|
||||||
};
|
};
|
||||||
App.log.Info($"SendDelGameSavList");
|
App.log.Info($"SendDelGameSavList");
|
||||||
App.network.SendToServer((int)CommandID.CmdGamesavGetGameSavList, ProtoBufHelper.Serizlize(req));
|
App.network.SendToServer((int)CommandID.CmdGamesavDelGameSav, ProtoBufHelper.Serizlize(req));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RecvDelGameSavList(byte[] reqData)
|
void RecvDelGameSavList(byte[] reqData)
|
||||||
@ -105,7 +105,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
App.log.Info($"上传即时存档数据 原数据大小:{RawData.Length},压缩后;{compressRawData.Length}");
|
App.log.Info($"上传即时存档数据 原数据大小:{RawData.Length},压缩后;{compressRawData.Length}");
|
||||||
App.log.Info($"上传截图 原数据大小:{SavImgData.Length},压缩后;{compressImgData.Length}");
|
App.log.Info($"上传截图 原数据大小:{SavImgData.Length},压缩后;{compressImgData.Length}");
|
||||||
|
|
||||||
App.network.SendToServer((int)CommandID.CmdGamesavGetGameSavList, ProtoBufHelper.Serizlize(req));
|
App.network.SendToServer((int)CommandID.CmdGamesavUploadGameSav, ProtoBufHelper.Serizlize(req));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RecvUpLoadGameSav(byte[] reqData)
|
void RecvUpLoadGameSav(byte[] reqData)
|
||||||
|
|||||||
@ -46,7 +46,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
float LastLoopTime_15s;
|
float LastLoopTime_15s;
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
NetMsg.Instance.DequeueNesMsg();
|
NetMsg.Instance.NextNetEvent();
|
||||||
|
|
||||||
LoopAction_tick?.Invoke();
|
LoopAction_tick?.Invoke();
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
|
using AxibugEmuOnline.Client.Event;
|
||||||
using AxibugProtobuf;
|
using AxibugProtobuf;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -15,11 +16,15 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
private Dictionary<int, List<Delegate>> netEventDic = new Dictionary<int, List<Delegate>>(128);
|
private Dictionary<int, List<Delegate>> netEventDic = new Dictionary<int, List<Delegate>>(128);
|
||||||
|
|
||||||
private Queue<ValueTuple<int, int, byte[]>> queueNetMsg = new Queue<ValueTuple<int, int, byte[]>>();
|
private Queue<ValueTuple<int, int, byte[]>> queueNetMsg = new Queue<ValueTuple<int, int, byte[]>>();
|
||||||
|
public static object lockQueueNetMsg = new object();
|
||||||
|
|
||||||
|
private Queue<Action> queueEventFromNet = new Queue<Action>();
|
||||||
|
public static object lockQueueEventFromNet = new object();
|
||||||
|
|
||||||
|
|
||||||
private NetMsg() { }
|
private NetMsg() { }
|
||||||
|
|
||||||
|
|
||||||
public static object lockQueueObj = new object();
|
|
||||||
|
|
||||||
#region RegisterMsgEvent
|
#region RegisterMsgEvent
|
||||||
|
|
||||||
@ -62,10 +67,53 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region PostEvent
|
|
||||||
public void EnqueueNesMsg(int cmd, int ERRCODE, byte[] arg)
|
public void NextNetEvent()
|
||||||
{
|
{
|
||||||
lock (lockQueueObj)
|
DequeueNesMsg();
|
||||||
|
DequeueEventFromNet();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region PostEventFromNet
|
||||||
|
|
||||||
|
public void EnqueueEventFromNet(Action act)
|
||||||
|
{
|
||||||
|
lock (lockQueueEventFromNet)
|
||||||
|
{
|
||||||
|
queueEventFromNet.Enqueue(act);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DequeueEventFromNet()
|
||||||
|
{
|
||||||
|
lock (lockQueueEventFromNet)
|
||||||
|
{
|
||||||
|
while (queueEventFromNet.Count > 0)
|
||||||
|
{
|
||||||
|
var msgData = queueEventFromNet.Dequeue();
|
||||||
|
PostNetEventFromNet(msgData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PostNetEventFromNet(Action act)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
act?.Invoke();
|
||||||
|
}
|
||||||
|
catch(Exception ex)
|
||||||
|
{
|
||||||
|
App.log.Error(ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region PostNetMsg
|
||||||
|
|
||||||
|
public void EnqueueNetMsg(int cmd, int ERRCODE, byte[] arg)
|
||||||
|
{
|
||||||
|
lock (lockQueueNetMsg)
|
||||||
{
|
{
|
||||||
queueNetMsg.Enqueue(new ValueTuple<int, int, byte[]>(cmd, ERRCODE, arg));
|
queueNetMsg.Enqueue(new ValueTuple<int, int, byte[]>(cmd, ERRCODE, arg));
|
||||||
}
|
}
|
||||||
@ -73,7 +121,7 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
|
|
||||||
public void DequeueNesMsg()
|
public void DequeueNesMsg()
|
||||||
{
|
{
|
||||||
lock (lockQueueObj)
|
lock (lockQueueNetMsg)
|
||||||
{
|
{
|
||||||
while (queueNetMsg.Count > 0)
|
while (queueNetMsg.Count > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -15,11 +15,11 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
{
|
{
|
||||||
public NetworkHelper()
|
public NetworkHelper()
|
||||||
{
|
{
|
||||||
|
OnConnected += NetworkConnected;
|
||||||
//指定接收服务器数据事件
|
//指定接收服务器数据事件
|
||||||
OnReceiveData += GetDataCallBack;
|
OnReceiveData += GetDataCallBack;
|
||||||
//断开连接
|
//断开连接
|
||||||
OnClose += OnConnectClose;
|
OnClose += OnConnectClose;
|
||||||
OnConnected += NetworkConnected;
|
|
||||||
//网络库调试信息输出事件,用于打印网络内容
|
//网络库调试信息输出事件,用于打印网络内容
|
||||||
OnLogOut += NetworkDeBugLog;
|
OnLogOut += NetworkDeBugLog;
|
||||||
}
|
}
|
||||||
@ -39,7 +39,17 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
const int ReConnectTryTime = 1000;
|
const int ReConnectTryTime = 1000;
|
||||||
|
|
||||||
public void NetworkConnected(bool IsConnect)
|
void NetworkConnected(bool IsConnect)
|
||||||
|
{
|
||||||
|
NetMsg.Instance.EnqueueEventFromNet(() => NetworkConnected_Delegate(IsConnect));
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnConnectClose()
|
||||||
|
{
|
||||||
|
NetMsg.Instance.EnqueueEventFromNet(() => OnConnectClose_Delegate());
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetworkConnected_Delegate(bool IsConnect)
|
||||||
{
|
{
|
||||||
NetworkDeBugLog($"NetworkConnected:{IsConnect}");
|
NetworkDeBugLog($"NetworkConnected:{IsConnect}");
|
||||||
if (IsConnect)
|
if (IsConnect)
|
||||||
@ -63,7 +73,7 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void NetworkDeBugLog(string str)
|
void NetworkDeBugLog(string str)
|
||||||
{
|
{
|
||||||
//用于Unity内的输出
|
//用于Unity内的输出
|
||||||
//Debug.Log("NetCoreDebug >> "+str);
|
//Debug.Log("NetCoreDebug >> "+str);
|
||||||
@ -76,7 +86,7 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
/// <param name="CMDID">协议ID</param>
|
/// <param name="CMDID">协议ID</param>
|
||||||
/// <param name="ERRCODE">错误编号</param>
|
/// <param name="ERRCODE">错误编号</param>
|
||||||
/// <param name="data">业务数据</param>
|
/// <param name="data">业务数据</param>
|
||||||
public void GetDataCallBack(int CMDID, int ERRCODE, byte[] data)
|
void GetDataCallBack(int CMDID, int ERRCODE, byte[] data)
|
||||||
{
|
{
|
||||||
//NetworkDeBugLog("收到消息 CMDID =>" + CMDID + " ERRCODE =>" + ERRCODE + " 数据长度=>" + data.Length);
|
//NetworkDeBugLog("收到消息 CMDID =>" + CMDID + " ERRCODE =>" + ERRCODE + " 数据长度=>" + data.Length);
|
||||||
try
|
try
|
||||||
@ -86,7 +96,7 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
if (CMDID <= (int)CommandID.CmdPong)
|
if (CMDID <= (int)CommandID.CmdPong)
|
||||||
NetMsg.Instance.PostNetMsgEvent(CMDID, ERRCODE, data);
|
NetMsg.Instance.PostNetMsgEvent(CMDID, ERRCODE, data);
|
||||||
else//加入队列,主线程来取
|
else//加入队列,主线程来取
|
||||||
NetMsg.Instance.EnqueueNesMsg(CMDID, ERRCODE, data);
|
NetMsg.Instance.EnqueueNetMsg(CMDID, ERRCODE, data);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -97,7 +107,7 @@ namespace AxibugEmuOnline.Client.Network
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关闭连接
|
/// 关闭连接
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void OnConnectClose()
|
void OnConnectClose_Delegate()
|
||||||
{
|
{
|
||||||
NetworkDeBugLog("OnConnectClose");
|
NetworkDeBugLog("OnConnectClose");
|
||||||
Eventer.Instance.PostEvent(EEvent.OnLossLoginState);
|
Eventer.Instance.PostEvent(EEvent.OnLossLoginState);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user