/// <summary> /// Handle the login of client. /// </summary> internal void StartSession(Account account, string ipAddress, string deviceModel, byte[] sessionId, int proxyId) { if (account.Session != null) { NetAccountSessionManager.TryRemove(account.Session.SessionId); account.Session.SendMessage(NetUtils.SERVICE_NODE_TYPE_PROXY_CONTAINER, new UnbindServerMessage()); account.Session.Destruct(); account.SetSession(null); } NetAccountSession session = NetAccountSessionManager.Create(account, sessionId); account.SetSession(session); account.SessionStarted(LogicTimeUtil.GetTimestamp(), ipAddress, deviceModel); session.SetServiceNodeId(NetUtils.SERVICE_NODE_TYPE_PROXY_CONTAINER, proxyId); LoginClientOkMessage loginClientOkMessage = new LoginClientOkMessage(); loginClientOkMessage.SetAccountId(account.Id); loginClientOkMessage.SetHomeId(account.Id); loginClientOkMessage.SetPassToken(account.PassToken); loginClientOkMessage.SetAccountCreatedDate(account.AccountCreatedDate); loginClientOkMessage.SetSessionCount(account.TotalSessions); loginClientOkMessage.SetPlayTimeSeconds(account.PlayTimeSecs); session.SendMessage(NetUtils.SERVICE_NODE_TYPE_PROXY_CONTAINER, loginClientOkMessage); }