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 }); } } }