コード例 #1
0
        public IActionResult Index(string id)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                return(View("Index", new ChatChannelsViewModel()
                {
                    ChatChannels = _chatChannelRepository.GetAll()
                }));
            }

            else
            {
                return(View("Channel", new ChatChannelViewModel()
                {
                    Channel = id,
                    Messages = _chatMessageRepository.GetByChannel(id)
                }));
            }
        }
コード例 #2
0
ファイル: ChatMessageConsumer.cs プロジェクト: mikerosol/Chat
        public async Task ConsumeAsync()
        {
            _consumer.Subscribe(_chatChannelRepository.GetAll());

            try
            {
                while (true)
                {
                    using (CancellationTokenSource cts = new CancellationTokenSource())
                    {
                        Console.CancelKeyPress += (_, e) =>
                        {
                            e.Cancel = true;
                            cts.Cancel();
                        };

                        try
                        {
                            var cr = _consumer.Consume(cts.Token);

                            var message = JsonConvert.DeserializeObject <ChatMessageSentMessage>(cr.Value);
                            Console.WriteLine(message.ToJsonString());
                            await _messageSentMessageHandler.Handle(message);
                        }
                        catch (ConsumeException e)
                        {
                            Console.WriteLine($"Error occured: {e.Error.Reason}");
                        }
                    };
                }
            }
            catch (OperationCanceledException)
            {
                _consumer.Close();
            }
        }