Files
Fishing2/Assets/Scripts/Common/Net/Net.cs

77 lines
1.8 KiB
C#

using Assets.Scripts.Entity;
using Assets.Scripts.Hotfix;
using Fantasy.Async;
using Fantasy.Network;
using Fantasy.Network.Interface;
using NBC;
namespace NBF
{
public class Net : EventDispatcher
{
public static Session Session { get; private set; }
public const int HeartbeatInterval = 5000;
#region
private static Net _inst;
public static Net Inst => _inst ??= new Net();
public Net()
{
}
#endregion
#region
public static Session CreateSession(string address)
{
var session = SessionHelper.CreateSession(Game.Main, address, OnConnectComplete,
OnConnectFail,
OnConnectDisconnect);
Session = session;
return session;
}
private static void OnConnectComplete()
{
Log.Info("连接成功");
// 心跳
Session.AddComponent<SessionHeartbeatComponent>().Start(HeartbeatInterval);
}
private static void OnConnectFail()
{
Log.Info("连接失败");
// SetLoginState(false);
}
private static void OnConnectDisconnect()
{
Log.Info("连接断开");
// SetLoginState(false);
}
#endregion
#region
public static FTask<IResponse> Call(IRequest request, long routeId = 0)
{
// var response = await Session.Call(request, routeId);
// response.DispatchMessage();
return Session.Call(request, routeId);;
}
public static void Send(IMessage message, uint rpcId = 0, long routeId = 0)
{
Session.Send(message, rpcId, routeId);
}
#endregion
}
}