示例#1
0
        private void Consumer_MessageReceived(object sender, MessageReceivedModel message)
        {
            if (message == null)
            {
                return;
            }

            var time = DateTimeOffset.FromUnixTimeSeconds(message.Received).DateTime.ToLocalTime().TimeOfDay;

            Enum.TryParse <KnownTypes>(message.Type, out var messageType);

            var output = messageType switch
            {
                KnownTypes.join => $"User [{message.Nickname}] entered the party",
                KnownTypes.leave => $"User [{message.Nickname}] propably has something better to do.",
                KnownTypes.publish => $"{message.Nickname} [{time.ToString()}]: {message.Message}",
                _ => $"",
            };

            if (string.IsNullOrWhiteSpace(output))
            {
                return;
            }

            WriteToConsole(output, TryGetColor(messageType.ToString(), message.Nickname));
        }
示例#2
0
        private MessageReceivedModel DecodeMesage(byte[] body)
        {
            var json = Encoding.UTF8.GetString(body);
            MessageReceivedModel sanitized = null;

            try
            {
                var message = JsonSerializer.Deserialize <MessageReceivedModel>(json);
                sanitized = message.Sanitize();
            }
            catch
            {
            }

            try
            {
                var messageBasic = JsonSerializer.Deserialize <MessageReceivedModelBase>(json);
                var message      = new MessageReceivedModel()
                {
                    Message   = messageBasic.Message,
                    Nickname  = messageBasic.Nickname,
                    Timestamp = messageBasic.Received,
                    Type      = messageBasic.Type
                };

                sanitized = message.Sanitize();
            }
            catch
            {
            }

            return(sanitized);
        }