diff --git a/Assets/TEngine/Scripts/Runtime/Core/NetWork/Core/INetworkChannel.cs b/Assets/TEngine/Scripts/Runtime/Core/NetWork/Core/INetworkChannel.cs
index 783aa2e5..38b33ab5 100644
--- a/Assets/TEngine/Scripts/Runtime/Core/NetWork/Core/INetworkChannel.cs
+++ b/Assets/TEngine/Scripts/Runtime/Core/NetWork/Core/INetworkChannel.cs
@@ -112,7 +112,15 @@ namespace TEngine.Runtime
///
///
///
- void RegisterHandler(int actionId, CsMsgDelegate msgDelegate);
+ ///
+ void RegisterHandler(int actionId, CsMsgDelegate msgDelegate,bool checkRepeat = true);
+
+ ///
+ /// 注销网络消息包处理函数。
+ ///
+ ///
+ ///
+ void RmvHandler(int actionId, CsMsgDelegate msgDelegate);
///
/// 连接到远程主机。
@@ -139,6 +147,14 @@ namespace TEngine.Runtime
///
/// 消息包类型。
/// 要发送的消息包。
- void Send(T packet) where T : Packet;
+ bool Send(T packet) where T : Packet;
+
+ ///
+ /// 向远程主机发送消息包并注册回调
+ ///
+ ///
+ ///
+ ///
+ bool SendCsMsg(TEngineProto.MainPack pack, CsMsgDelegate resHandler = null);
}
}
\ No newline at end of file
diff --git a/Assets/TEngine/Scripts/Runtime/Core/NetWork/Core/NetworkManager.NetworkChannelBase.cs b/Assets/TEngine/Scripts/Runtime/Core/NetWork/Core/NetworkManager.NetworkChannelBase.cs
index 4c9ee08e..e50a4022 100644
--- a/Assets/TEngine/Scripts/Runtime/Core/NetWork/Core/NetworkManager.NetworkChannelBase.cs
+++ b/Assets/TEngine/Scripts/Runtime/Core/NetWork/Core/NetworkManager.NetworkChannelBase.cs
@@ -15,7 +15,7 @@ namespace TEngine.Runtime
///
private abstract class NetworkChannelBase : INetworkChannel, IDisposable
{
- private const float DefaultHeartBeatInterval = 30f;
+ private const float DefaultHeartBeatInterval = 30;
private const int MAX_MSG_HANDLE = 256;
private readonly string m_Name;
@@ -292,8 +292,9 @@ namespace TEngine.Runtime
///
///
///
+ ///
///
- public void RegisterHandler(int actionId, CsMsgDelegate msgDelegate)
+ public void RegisterHandler(int actionId, CsMsgDelegate msgDelegate,bool checkRepeat = true)
{
if (msgDelegate == null)
{
@@ -315,7 +316,10 @@ namespace TEngine.Runtime
}
else
{
- Log.Warning("-------------repeat RegCmdHandle ActionCode:{0}-----------", (ActionCode)actionId);
+ if (checkRepeat)
+ {
+ Log.Warning("-------------repeat RegCmdHandle ActionCode:{0}-----------", (ActionCode)actionId);
+ }
}
}
}
@@ -434,13 +438,39 @@ namespace TEngine.Runtime
}
}
}
+
+ ///
+ /// 发送消息包并注册回调
+ ///
+ ///
+ ///
+ ///
+ ///
+ public bool SendCsMsg(MainPack pack, CsMsgDelegate resHandler = null)
+ {
+ var ret = Send(pack);
+ if (!ret)
+ {
+ TLogger.LogError("SendCSMsg Error");
+ }
+ else
+ {
+ if (resHandler != null)
+ {
+ RegTimeOutHandle((uint)pack.actioncode, resHandler);
+ RegisterHandler((int)pack.actioncode, resHandler, false);
+ }
+ }
+
+ return ret;
+ }
///
/// 向远程主机发送消息包。
///
/// 消息包类型。
/// 要发送的消息包。
- public void Send(T packet) where T : Packet
+ public bool Send(T packet) where T : Packet
{
if (m_Socket == null)
{
@@ -448,7 +478,7 @@ namespace TEngine.Runtime
if (NetworkChannelError != null)
{
NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage);
- return;
+ return false;
}
throw new Exception(errorMessage);
@@ -460,7 +490,7 @@ namespace TEngine.Runtime
if (NetworkChannelError != null)
{
NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage);
- return;
+ return false;
}
throw new Exception(errorMessage);
@@ -472,7 +502,7 @@ namespace TEngine.Runtime
if (NetworkChannelError != null)
{
NetworkChannelError(this, NetworkErrorCode.SendError, SocketError.Success, errorMessage);
- return;
+ return false;
}
throw new Exception(errorMessage);
@@ -482,6 +512,8 @@ namespace TEngine.Runtime
{
m_SendPacketPool.Enqueue(packet);
}
+
+ return true;
}
///
diff --git a/Assets/TEngine/Tools~/Protobuf/Proto/TEngineProto.proto b/Assets/TEngine/Tools~/Protobuf/Proto/TEngineProto.proto
index 48868cc6..ce5ff082 100644
--- a/Assets/TEngine/Tools~/Protobuf/Proto/TEngineProto.proto
+++ b/Assets/TEngine/Tools~/Protobuf/Proto/TEngineProto.proto
@@ -41,7 +41,7 @@ message MainPack
string extstr = 5;
repeated RoomPack roompack = 6; //房间包,repeated加上为list
PlayerPack playerpack = 7;
- long HeatEchoTime = 8; //心跳包回包时间
+ float HeatEchoTime = 8; //心跳包回包时间
}
message LoginPack