提交示例代码

This commit is contained in:
Bob.Song
2026-03-05 11:39:06 +08:00
commit 25958f58c3
2534 changed files with 209593 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
using Fantasy.Async;
using Fantasy.Network;
using Fantasy.Platform.Net;
namespace Fantasy;
public static class GateLoginHelper
{
/// <summary>
/// Gate服务器登陆到其他服务器接口
/// </summary>
/// <param name="session"></param>
/// <param name="account"></param>
/// <returns></returns>
public static async FTask<uint> Online(Session session, Account account)
{
// 这里应该编写登陆到其他服务器的逻辑,现在没有暂时空着.
// 1、如何得到Mail服务器的地址。✅
// 2、如何做到发送到Gate服务器自动中间消息给Mail。
// 3、就算是Gate可以中间Mail消息到Mail服务器了那Mail如何发送消息给Gate再让Gate自动的发送消息给客户端呢。
var scene = session.Scene;
var mailConfig = SceneConfigData.Instance.GetSceneBySceneType(SceneType.Mail)[0];
// 挂载自定义路由协议组件挂载了这个组件后就可以自动转发Route协议了。
var routeComponent = session.GetOrAddComponent<RouteComponent>();
// var mailAddress = "127.0.0.1" + mailConfig.InnerPort;
//mailConfig.RouteId 423423445678974
// 发送服务器之间的消息需要通过当前Scene的NetworkMessagingComponent组件来进行发送。
var response = (Mail2G_LoginResponse)await scene.NetworkMessagingComponent.CallInnerRoute(mailConfig.RouteId, new G2Mail_LoginRequest()
{
AccountId = account.Id,
Name = account.Name,
CreateTime = account.CreateTime,
GateRouteId = session.RuntimeId
});
if (response.ErrorCode != 0)
{
return response.ErrorCode;
}
// 保存这个MailUnitRouteId用于后续的下线等操作。
account.MailRouteId = response.MailUnitRouteId;
// 添加自定义路由协议地址。
routeComponent.AddAddress(RouteType.MailRoute, response.MailUnitRouteId);
// // Gate服务器发送一个消息给Mail服务器
// scene.NetworkMessagingComponent.SendInnerRoute(response.MailUnitRouteId,new G2Mail_TestMessage()
// {
// Tag = "666"
// });
return 0;
}
/// <summary>
/// Gate服务器下线其他服务器接口
/// </summary>
/// <param name="scene"></param>
/// <param name="mailRouteId"></param>
/// <returns></returns>
public static async FTask<uint> Offline(Scene scene, long mailRouteId)
{
// 给Mail服务器发送下线消息
var mailResponse = (Mail2G_ExitResponse)await scene.NetworkMessagingComponent.CallInnerRoute(mailRouteId, new G2Mail_ExitRequest());
if (mailResponse.ErrorCode != 0)
{
Log.Error($"Mail服务器无法正常下线 ErrorCode:{mailResponse.ErrorCode}");
return mailResponse.ErrorCode;
}
return 0;
}
}