private void OnGalaxyConnect(byte[] message) { MessageFirst messageFirst = MessageFirst.Deserialize <MessageFirst>(message); // распаковываем первое ответное сообщение StaticLinks.clientData.myId = messageFirst.id; gameObject.SetActive(false); }
/// <summary> /// Сюда нам придет запрос на авторизацию /// </summary> /// <param name="approvalConnection">Временное не авторизированное соеденение</param> /// <param name="data">Массив байт, данные присланные вместе с запросом авторизации</param> private void OnGalaxyConnect(ApprovalConnection approvalConnection, byte[] data) { Console.WriteLine("Авторизация"); MessageAuth message = MessageAuth.Deserialize <MessageAuth>(data); //преобразовывем массив байт в читабельное сообщение //тут нам следовало бы провести какую либо проверку правильности логина и пароля //Но сейчас мы не станем этого делать, и просто разрешить соеденение всем в чьих логинах содержится test if (message.login.Contains("test")) { MessageFirst response = new MessageFirst(); //Создадим пакет который мы отправим клиенту вместе с разрешением коннекта response.id = DataBaseEmitator.GetNewUserID(); // Получаем ид ClientConnection connection; // Раз мы решили авторизировать клиента, то следует создать уже постоянное соеденение connection = approvalConnection.Approve(response, response.id); // возвращяем данные вместе с разрешением, так же мы получим уже рабочий экземпляр авторизированного соеденения Client client = new Client(connection, response.id); Server.clientManager.AddClient(client); } else { //Ну а раз test в логине не нашлось, то соеденение не разрешаем //Тут нам нужно отправить два оргумента // первый это код ошибки, вы можете указать его любым, от вернется клиенту для дайнейшей обработки // второй это читабельное сообщение об ошибки, впрочим это не обязательно approvalConnection.Deny(1, "Нам не нравится ваш логин"); } }