1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using System;
- using System.Net;
- namespace ET.Server
- {
- /// <summary>
- /// 登录验证
- /// </summary>
- [MessageHandler(SceneType.Realm)]
- public class C2R_LoginHandler : AMRpcHandler<C2R_Login, R2C_Login>
- {
- protected override async ETTask Run(Session session, C2R_Login request, R2C_Login response, Action reply)
- {
- if (session.DomainScene().SceneType != SceneType.Realm)
- {
- Log.Debug($"请求的Scene错误...SceneType={session.DomainScene().SceneType}");
- session.Dispose();
- return;
- }
-
- // 重复请求
- if (session.GetComponent<SessionLockComponent>() != null)
- {
- response.Error = ErrorCode.ERR_RequestRepeatedly;
- reply();
- return;
- }
-
- session.AddComponent<SessionLockComponent>();
-
- // 随机分配一个Game
- StartSceneConfig config = RealmGameAddressHelper.GetGame(session.DomainZone());
- Log.Debug($"Game address: {MongoHelper.ToJson(config)}");
-
- // 向game请求一个key,客户端可以拿着这个key连接game
- G2R_GetLoginKey g2RGetLoginKey = (G2R_GetLoginKey) await ActorMessageSenderComponent.Instance.Call(
- config.InstanceId, new R2G_GetLoginKey() {Account = request.Account});
- response.Address = config.InnerIPOutPort.ToString();
- response.Key = g2RGetLoginKey.Key;
- response.GateId = g2RGetLoginKey.GateId;
- }
- }
- }
|