protected override async void ViewIsDisappearing(object sender, EventArgs e) { base.ViewIsDisappearing(sender, e); _chateService.OnReceivedMessage -= _chateService_OnReceivedMessage; var message = new UserConnectedMessage(UserName, GroupName); await _chateService.LeaveChannelAsync(message); }
/// <summary> /// Método que permite la unión a la sala de chat correspondiente /// </summary> /// <param name="message"></param> /// <returns></returns> public async Task JoinChannelAsync(UserConnectedMessage message) { // se verifica que la conexión este establecida if (!IsConnected) { return; } // Se estable el token de conexión message.Token = ConnectionToken; // Se estable que el usuario a entrado a un sala message.IsEntering = true; // Se serializa el objeto a enviar var json = JsonConvert.SerializeObject(message); // Se convierte a JSON el contenido var content = new StringContent(json, Encoding.UTF8, "application/json"); // Se ejecuta el envio a traves del endpoint correspondiente "POST" await httpClient.PostAsync(Config.AddToGroupEndPoint, content); // Se envia el mensaje para informar que se han conectado await SendMessageAsync(message); }
public override async void Init(object initData) { base.Init(initData); var data = initData as Tuple <string, string>; UserName = data.Item1; GroupName = data.Item2; var message = new UserConnectedMessage(UserName, GroupName); await _chateService.JoinChannelAsync(message); var user = await _chateService.GetUsersGroup(GroupName); Users = new ObservableCollection <User>(user); }
private static async Task JoinRoom() { var rooms = await service.GetRooms(); foreach (var room in rooms) { Console.WriteLine(room.Name); } room = Console.ReadLine(); var message = new UserConnectedMessage(userName, room); await service.JoinChannelAsync(message); var usersInRoom = await service.GetUsersGroup(room); Console.WriteLine($"There are currently {usersInRoom.Count} users in the room"); }
public async Task LeaveChannelAsync(UserConnectedMessage message) { if (!IsConnected) { return; } message.Token = ConnectionToken; var json = JsonConvert.SerializeObject(message); var content = new StringContent(json, Encoding.UTF8, "application/json"); await httpClient.PostAsync(Config.LeaveGroupEndpoint, content); await SendMessageAsync(message); }
/// <summary> /// Método para salir de una sala de chat /// </summary> /// <param name="message"></param> /// <returns></returns> public async Task LeaveChannelAsync(UserConnectedMessage message) { // Verificamos que aun sea una conexión activa if (!IsConnected) { return; } // Se establece el Token de conexión correspondiente message.Token = ConnectionToken; // Se serializa el objeto mensaje var json = JsonConvert.SerializeObject(message); // se genera el contenido JSON var content = new StringContent(json, Encoding.UTF8, "application/json"); // Se ejecuta POST del contenido generado await httpClient.PostAsync(Config.LeaveGroupEndpoint, content); // Se envia el mensaje que dara a conocer la desconexión await SendMessageAsync(message); }
public override async void Init(object initData) { base.Init(initData); var data = initData as Tuple <Greeting, string>; UserName = data.Item1.Username; FileName = data.Item1.FileName; GroupName = data.Item2; var messageGreeting = new PhotoUrlMessage(UserName); if (!string.IsNullOrEmpty(FileName)) { messageGreeting.Url = FileName; var message = new UserConnectedMessage(UserName, GroupName); await ChatService.JoinChannelAsync(message); Messages.Add(messageGreeting); } var user = await ChatService.GetUsersGroup(GroupName); Users = new ObservableCollection <User>(user); }
static async Task Main(string[] args) { Console.WriteLine("User Name:"); userName = Console.ReadLine(); service = new ChatService(); service.OnReceivedMessage += Service_OnReceivedMessage; await service.InitAsync(userName); Console.WriteLine("You are now connected"); await JoinRoom(); var keepGoing = true; do { var text = Console.ReadLine(); if (text == "exit") { await service.DisconnectAsync(); keepGoing = false; } else if (text == "leave") { var message = new UserConnectedMessage(userName, room); await service.LeaveChannelAsync(message); await JoinRoom(); } else if (text == "private") { Console.WriteLine("Enter UserName: "******"Enter private message: "); text = Console.ReadLine(); var message = new SimpleTextMessage(userName) { Text = text, Recipient = user }; await service.SendMessageAsync(message); } else if (text == "image") { var imagePath = @"D:\temp\Pictures\tests\emma.jpg"; var imageStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read); var bytes = ImageHelper.ReadFully(imageStream); var base64Photo = Convert.ToBase64String(bytes); var message = new PhotoMessage(userName) { Base64Photo = base64Photo, FileEnding = imagePath.Split('.').Last(), GroupName = room }; await service.SendMessageAsync(message); } else { var message = new SimpleTextMessage(userName) { Text = text, GroupName = room }; await service.SendMessageAsync(message); } } while (keepGoing); }