public static async Task Main(string[] args) { for (var i = 0; i < args.Length; i++) { if (args[i] == "server" || args[i] == "azure") { server = true; } } #region Login // get json var loginInfo = JsonSerializer.Serialize(new LoginInfo { Name = name, BirthDate = birthDate, Gender = gender, DeviceType = DeviceType.Console, DeviceId = "87989c4a-0bf7-42e3-89dd-abc17bacd2bd" }); Console.WriteLine(tokenUrl); // get Token response = await client.PostAsync( tokenUrl, new StringContent(loginInfo, Encoding.UTF8, "application/json")); responseString = await response.Content.ReadAsStringAsync(); var responseObject = JsonSerializer.Deserialize <LoginResponse>(responseString); var token = responseObject.token; Console.WriteLine($"Got Token: " + token); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); #endregion #region Init and Connect to SignalR // Subscribe messagingService events messagingService.Connecting += (s, e) => Console.WriteLine(e.Message); messagingService.ConnectionFailed += (s, e) => Console.WriteLine(e.Message); messagingService.Connected += (s, e) => Console.WriteLine(e.Message); messagingService.Closed += (s, e) => Console.WriteLine(e.Message); messagingService.Reconnecting += (s, e) => Console.WriteLine(e.Message); messagingService.Reconnected += async(s, e) => { Console.WriteLine(e.Message); if (currentRoomId != null) { await messagingService.JoinRoomAsync(currentRoomId, name); } }; messagingService.MessageReceived += Service_OnMessageReceived; messagingService.SomeoneEntered += Service_OnEntered; messagingService.SomeoneLeft += Service_OnLeft; // Initialize the messaging service messagingService.Init(hubUrl, token); // Connect to hub await messagingService.ConnectAsync(); Console.WriteLine("-----------------------------------"); Console.WriteLine($"OK, {hubUrl} 접속({messagingService.ConnectionId})"); Console.WriteLine("-----------------------------------"); #endregion #region room list await RefreshUserListAsync(); await ShowUsersAsync(); #endregion #region Choose and join the Constants.Room // TODO: 콘솔은 admin이므로 현재 열려 있는 방의 목록을 보여준다. // TODO: 방에 입장. #endregion #region Chat var keepGoing = true; do { var text = Console.ReadLine(); if (text == "exit") { keepGoing = false; } else if (roomList.ContainsKey(text)) { await messagingService.JoinRoomAsync(roomList[text], name); currentRoomId = roomList[text]; Console.WriteLine($"--- Joined to {text}({currentRoomId}) ---"); } else if (text == "leave") { await messagingService.LeaveRoomAsync(currentRoomId, name); currentRoomId = null; await ShowUsersAsync(); } else if (text == "list") { await ShowUsersAsync(); } else { if (currentRoomId != null) { await messagingService.SendMessageToRoomAsync(currentRoomId, name, text); } else { await ShowUsersAsync(); } } } while (keepGoing); #endregion }