Beispiel #1
0
        /// <summary>
        /// Sends a message to all clients
        /// </summary>
        /// <param name="message">Message to send</param>
        /// <returns>A task that represents the asychronous communication</returns>
        public async Task SendMessage(string lobby, string message)
        {
            string getuser = Context.User?.FindFirst(ClaimTypes.Name)?.Value;

            //Check if user is allowed
            if (_userService.GetUserConfiguration(getuser)?
                .Lobbies.FirstOrDefault(l => l.LobbyName.Contains(lobby)) == null)
            {
                return;
            }

            Message msg = new Message()
            {
                //Lobby = //_userService.GetUserConfiguration(getuser).Lobbies.First().ConvertToSanitizedLobby(),
                Text      = message,
                Timestamp = DateTime.UtcNow,
                Type      = MessageType.User,
                User      = getuser //_userService.GetUserConfiguration(getuser).ConvertToSanitizedUser()
            };


            await Clients.Group(lobby).SendAsync("message", lobby, msg);

            var room = _lobbyService.All().Where(e => e.LobbyName == lobby).First();

            //save messages for reloading
            room.Messages.Add(msg);
        }