75 lines
1.7 KiB
C#
75 lines
1.7 KiB
C#
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
|
|
}
|
|
} |