Exemplo n.º 1
0
        public override async Task Listen(ListenRequest request, IServerStreamWriter <ListenResponse> responseStream, ServerCallContext context)
        {
            var channel  = _chatter.Listen(request.RoomId);
            var userName = request.UserName;

            while (await channel.WaitToReadAsync())
            {
                while (channel.TryRead(out var message))
                {
                    if (message.UserName.Equals(userName, StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }
                    await responseStream.WriteAsync(new ListenResponse
                    {
                        UserName = message.UserName,
                        Message  = message.Text
                    });
                }
            }
        }