private async void OnLogin() { Session session = null; try { session = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create("127.0.0.1:10002"); string text = this.account.GetComponent <InputField>().text; R2C_Login r2CLogin = await session.Call <R2C_Login>(new C2R_Login() { Account = text, Password = "******" }); Session gateSession = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address); Game.Scene.AddComponent <SessionComponent>().Session = gateSession; G2C_LoginGate g2CLoginGate = await SessionComponent.Instance.Session.Call <G2C_LoginGate>(new C2G_LoginGate(r2CLogin.Key)); Log.Info("登陆gate成功!"); Hotfix.Scene.GetComponent <UIComponent>().Create(UIType.Lobby); Hotfix.Scene.GetComponent <UIComponent>().Remove(UIType.Login); } catch (Exception e) { Log.Error(e.ToStr()); } finally { session?.Dispose(); } }
public static async void Login() { try { Game.Scene.AddComponent <MessageDispatherComponent, AppType>(AppType.Client); ClientConfig clientConfig = Game.Scene.AddComponent <ClientConfigComponent>().Config.GetComponent <ClientConfig>(); NetOuterComponent networkComponent = Game.Scene.AddComponent <NetOuterComponent>(); using (Session session = networkComponent.Create(clientConfig.Address)) { R2C_Login s2CLogin = await session.Call <C2R_Login, R2C_Login>(new C2R_Login { Account = "abcdef", Password = "******" }); networkComponent.Remove(session.Id); // 连接Gate using (Session gateSession = networkComponent.Create(s2CLogin.Address)) { await gateSession.Call <C2G_LoginGate, G2C_LoginGate>(new C2G_LoginGate(s2CLogin.Key)); } Log.Info("连接Gate验证成功!"); } } catch (Exception e) { Log.Error(e.ToString()); } }
private async void OnCreateRoom() { Session session = null; try { session = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create("127.0.0.1:10001"); R2C_Login r2CLogin = await session.Call <C2R_Login, R2C_Login>(new C2R_Login() { Account = "abcdef", Password = "******" }); Session gateSession = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address); G2C_LoginGate g2CLoginGate = await gateSession.Call <C2G_LoginGate, G2C_LoginGate>(new C2G_LoginGate(r2CLogin.Key)); Log.Info("登陆gate成功!"); } catch (Exception e) { Log.Error(e.ToStr()); } finally { session?.Dispose(); } }
/// <summary> /// 接收消息回调函数 /// </summary> private void OnHandleHotfixMsg(NetReceivePackage package) { Type msgType = _msgTypes.GetValueByKey(package.Type); object instance = Activator.CreateInstance(msgType); var message = ProtobufHelper.Decode(instance, package.ProtoBodyData); Debug.Log($"Handle net message : {package.Type}"); // TODO 可以在这里分发消息到逻辑层 R2C_Login loginMsg = message as R2C_Login; if (loginMsg != null) { Debug.Log($"R2C_Login = {loginMsg.Address}"); Debug.Log($"R2C_Login = {loginMsg.Key}"); } }
public async void OnLogin() { try { IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(GlobalConfigComponent.Instance.GlobalProto.Address); Session session = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint); string text = this.account.GetComponent <InputField>().text; R2C_Login r2CLogin = (R2C_Login)await session.Call(new C2R_Login() { Account = text, Password = "******" }, true); if (r2CLogin.Error != ErrorCode.ERR_Success) { Log.Error(r2CLogin.Error.ToString()); return; } connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address); Session gateSession = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint); Game.Scene.AddComponent <SessionComponent>().Session = gateSession; G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await SessionComponent.Instance.Session.Call(new C2G_LoginGate() { Key = r2CLogin.Key }, true); Log.Info("登陆gate成功!"); // 创建Player Player player = Model.EntityFactory.CreateWithId <Player>(g2CLoginGate.PlayerId); PlayerComponent playerComponent = Game.Scene.GetComponent <PlayerComponent>(); playerComponent.MyPlayer = player; Hotfix.Scene.GetComponent <UIComponent>().Create(UIType.UILobby); Hotfix.Scene.GetComponent <UIComponent>().Remove(UIType.UILogin); } catch (Exception e) { Log.Error(e.ToString()); } }
private async void OnLogin() { Session session = null; try { session = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create("127.0.0.1:10002"); string account = this.account.GetComponent <InputField>().text; R2C_Login r2CLogin = await session.Call <R2C_Login>(new C2R_Login() { Account = account, Password = "******" }); Session gateSession = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address); G2C_LoginGate g2CLoginGate = await gateSession.Call <G2C_LoginGate>(new C2G_LoginGate(r2CLogin.Key)); //Log.Debug($"{JsonHelper.ToJson(g2CLoginGate)}"); Log.Info("登陆gate成功!"); // 发送一个actor消息 gateSession.Send(new Actor_Test() { Info = "message client->gate->map->gate->client" }); // 向actor发起一次rpc调用 ActorRpc_TestResponse response = await gateSession.Call <ActorRpc_TestResponse>(new ActorRpc_TestRequest() { request = "request actor test rpc" }); Log.Info($"recv response: {JsonHelper.ToJson(response)}"); } catch (Exception e) { Log.Error(e.ToStr()); } finally { session?.Dispose(); } }
private void LoginOK(AResponse response) { R2C_Login r2CLogin = (R2C_Login)response; if (r2CLogin.Error != ErrorCode.ERR_Success) { Log.Error(r2CLogin.Error.ToString()); return; } Session gateSession = Game.Scene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address); Game.Scene.AddComponent <SessionComponent>().Session = gateSession; SessionComponent.Instance.Session.CallWithAction(new C2G_LoginGate() { Key = r2CLogin.Key }, (response2) => LoginGateOk(response2) ); }
private void LoginOK(Session loginSession, AResponse response) { loginSession.Dispose(); R2C_Login r2CLogin = (R2C_Login)response; if (r2CLogin.Error != ErrorCode.ERR_Success) { Log.Error(r2CLogin.Error.ToString()); return; } IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address); Session gateSession = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint); Game.Scene.AddComponent <SessionComponent>().Session = gateSession; SessionComponent.Instance.Session.CallWithAction(new C2G_LoginGate() { Key = r2CLogin.Key }, (response2) => LoginGateOk(response2) ); }