modify
This commit is contained in:
parent
20ab04db1f
commit
3863fae1f7
9
Runtime/Network/EConnectState.cs
Normal file
9
Runtime/Network/EConnectState.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace AlicizaX.Network.Runtime
|
||||||
|
{
|
||||||
|
public enum EConnectState:byte
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Connect,
|
||||||
|
Disconnect,
|
||||||
|
}
|
||||||
|
}
|
3
Runtime/Network/EConnectState.cs.meta
Normal file
3
Runtime/Network/EConnectState.cs.meta
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c53aae23b1a94f598e335310d9614ecb
|
||||||
|
timeCreated: 1742355596
|
@ -1,13 +1,21 @@
|
|||||||
using AlicizaX.Runtime;
|
using AlicizaX.Runtime;
|
||||||
using Cysharp.Threading.Tasks;
|
using Cysharp.Threading.Tasks;
|
||||||
using Fantasy.Network;
|
using Fantasy.Network;
|
||||||
|
using Fantasy.Network.Interface;
|
||||||
|
|
||||||
namespace AlicizaX.Network.Runtime
|
namespace AlicizaX.Network.Runtime
|
||||||
{
|
{
|
||||||
public interface INetworkManager : IModule
|
public interface INetworkManager : IModule
|
||||||
{
|
{
|
||||||
|
public EConnectState ConnectState { get; }
|
||||||
void SetHeartInterval(int heartInterval);
|
void SetHeartInterval(int heartInterval);
|
||||||
UniTask Initialize(params System.Reflection.Assembly[] assemblies);
|
UniTask Initialize(params System.Reflection.Assembly[] assemblies);
|
||||||
void Connect(string remoteAddress, NetworkProtocolType networkProtocolType, bool isHttps);
|
void Connect(string remoteAddress, NetworkProtocolType networkProtocolType, bool isHttps);
|
||||||
|
|
||||||
|
UniTask<T> Call<T>(IRequest request, long routeId = 0) where T : IResponse;
|
||||||
|
|
||||||
|
void Send(IMessage message, uint rpcId = 0, long routeId = 0);
|
||||||
|
|
||||||
|
void Send(IRouteMessage routeMessage, uint rpcId = 0, long routeId = 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using AlicizaX.Runtime;
|
using AlicizaX.Runtime;
|
||||||
using Cysharp.Threading.Tasks;
|
using Cysharp.Threading.Tasks;
|
||||||
using Fantasy.Network;
|
using Fantasy.Network;
|
||||||
|
using Fantasy.Network.Interface;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Scripting;
|
using UnityEngine.Scripting;
|
||||||
|
|
||||||
@ -15,6 +16,8 @@ namespace AlicizaX.Network.Runtime
|
|||||||
|
|
||||||
[SerializeField] private int m_HeartInterval = 2000;
|
[SerializeField] private int m_HeartInterval = 2000;
|
||||||
|
|
||||||
|
public EConnectState ConnectState => _networkManager.ConnectState;
|
||||||
|
|
||||||
protected override void Awake()
|
protected override void Awake()
|
||||||
{
|
{
|
||||||
ImplementationComponentType = Utility.Assembly.GetType(componentType);
|
ImplementationComponentType = Utility.Assembly.GetType(componentType);
|
||||||
@ -39,5 +42,20 @@ namespace AlicizaX.Network.Runtime
|
|||||||
{
|
{
|
||||||
_networkManager.Connect(remoteAddress, networkProtocolType, isHttps);
|
_networkManager.Connect(remoteAddress, networkProtocolType, isHttps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async UniTask<T> Call<T>(IRequest request, long routeId = 0) where T : IResponse
|
||||||
|
{
|
||||||
|
return await _networkManager.Call<T>(request, routeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Send(IMessage message, uint rpcId = 0, long routeId = 0)
|
||||||
|
{
|
||||||
|
_networkManager.Send(message, rpcId, routeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Send(IRouteMessage routeMessage, uint rpcId = 0, long routeId = 0)
|
||||||
|
{
|
||||||
|
_networkManager.Send(routeMessage, rpcId, routeId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ using AlicizaX.Runtime;
|
|||||||
using Cysharp.Threading.Tasks;
|
using Cysharp.Threading.Tasks;
|
||||||
using Fantasy;
|
using Fantasy;
|
||||||
using Fantasy.Network;
|
using Fantasy.Network;
|
||||||
|
using Fantasy.Network.Interface;
|
||||||
using Log = AlicizaX.Runtime.Log;
|
using Log = AlicizaX.Runtime.Log;
|
||||||
|
|
||||||
namespace AlicizaX.Network.Runtime
|
namespace AlicizaX.Network.Runtime
|
||||||
@ -13,8 +14,11 @@ namespace AlicizaX.Network.Runtime
|
|||||||
private Scene _scene;
|
private Scene _scene;
|
||||||
private Session _session;
|
private Session _session;
|
||||||
private int _heartInterval;
|
private int _heartInterval;
|
||||||
private bool isConnect;
|
|
||||||
|
|
||||||
|
|
||||||
|
public EConnectState ConnectState => _connectState;
|
||||||
|
|
||||||
|
private EConnectState _connectState;
|
||||||
void IModule.Dispose()
|
void IModule.Dispose()
|
||||||
{
|
{
|
||||||
_scene?.Dispose();
|
_scene?.Dispose();
|
||||||
@ -42,29 +46,42 @@ namespace AlicizaX.Network.Runtime
|
|||||||
|
|
||||||
public void Connect(string remoteAddress, NetworkProtocolType networkProtocolType, bool isHttps)
|
public void Connect(string remoteAddress, NetworkProtocolType networkProtocolType, bool isHttps)
|
||||||
{
|
{
|
||||||
if (isConnect) return;
|
|
||||||
_session = _scene.Connect(remoteAddress, networkProtocolType, OnConnectComplete, OnConnectFail, OnConnectDisconnect, isHttps);
|
_session = _scene.Connect(remoteAddress, networkProtocolType, OnConnectComplete, OnConnectFail, OnConnectDisconnect, isHttps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async UniTask<T> Call<T>(IRequest request, long routeId = 0) where T : IResponse
|
||||||
|
{
|
||||||
|
return (T)await _session.Call(request, routeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Send(IMessage message, uint rpcId = 0, long routeId = 0)
|
||||||
|
{
|
||||||
|
_session.Send(message, rpcId, routeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Send(IRouteMessage routeMessage, uint rpcId = 0, long routeId = 0)
|
||||||
|
{
|
||||||
|
_session.Send(routeMessage, rpcId, routeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void OnConnectComplete()
|
private void OnConnectComplete()
|
||||||
{
|
{
|
||||||
isConnect = true;
|
_connectState = EConnectState.Connect;
|
||||||
Log.Debug("连接成功");
|
|
||||||
// 添加心跳组件给Session。
|
|
||||||
// Start(2000)就是2000毫秒。
|
|
||||||
_session.AddComponent<SessionHeartbeatComponent>().Start(_heartInterval);
|
_session.AddComponent<SessionHeartbeatComponent>().Start(_heartInterval);
|
||||||
|
Log.Debug("Connect Success");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnConnectFail()
|
private void OnConnectFail()
|
||||||
{
|
{
|
||||||
isConnect = false;
|
_connectState = EConnectState.None;
|
||||||
Log.Debug("连接失败");
|
Log.Debug("Connect Fail");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnConnectDisconnect()
|
private void OnConnectDisconnect()
|
||||||
{
|
{
|
||||||
isConnect = false;
|
_connectState = EConnectState.Disconnect;
|
||||||
Log.Debug("连接断开");
|
Log.Debug("Disconnect");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user