C2R_LoginHandler.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using Model;
  3. namespace Hotfix
  4. {
  5. [MessageHandler(AppType.Realm)]
  6. public class C2R_LoginHandler : AMRpcHandler<C2R_Login, R2C_Login>
  7. {
  8. protected override async void Run(Session session, C2R_Login message, Action<R2C_Login> reply)
  9. {
  10. R2C_Login response = new R2C_Login();
  11. try
  12. {
  13. if (message.Account != "abcdef" || message.Password != "111111")
  14. {
  15. response.Error = ErrorCode.ERR_AccountOrPasswordError;
  16. reply(response);
  17. return;
  18. }
  19. // 随机分配一个Gate
  20. StartConfig config = Game.Scene.GetComponent<RealmGateAddressComponent>().GetAddress();
  21. //Log.Debug($"gate address: {MongoHelper.ToJson(config)}");
  22. string innerAddress = $"{config.GetComponent<InnerConfig>().Host}:{config.GetComponent<InnerConfig>().Port}";
  23. Session gateSession = Game.Scene.GetComponent<NetInnerComponent>().Get(innerAddress);
  24. // 向gate请求一个key,客户端可以拿着这个key连接gate
  25. G2R_GetLoginKey g2RGetLoginKey = await gateSession.Call<R2G_GetLoginKey, G2R_GetLoginKey>(new R2G_GetLoginKey());
  26. string outerAddress = $"{config.GetComponent<OuterConfig>().Host}:{config.GetComponent<OuterConfig>().Port}";
  27. response.Address = outerAddress;
  28. response.Key = g2RGetLoginKey.Key;
  29. reply(response);
  30. }
  31. catch (Exception e)
  32. {
  33. ReplyError(response, e, reply);
  34. }
  35. }
  36. }
  37. }