Beispiel #1
0
 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);
 }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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");
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }