Add Debouncing Middleware Feature to Pode #1467
Draft
+436
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
This pull request introduces a new middleware feature to Pode: Debouncing. The Debouncing middleware helps control and limit repeated client requests to specific endpoints within a specified timeout window. This feature enhances server performance by throttling excessive requests and prevents resource overloading.
Key Features:
Debounce Timeout:
429 Too Many Requests
response when requests exceed the defined threshold.Cleanup Mechanism:
Expiration Logic:
Thread-Safe Implementation:
ConcurrentDictionary
for managing debounce entries, ensuring thread safety in high-concurrency environments.Enable and Disable Functionality:
Add-PodeDebounce
to enable debouncing middleware with customizable options.Remove-PodeDebounce
to disable the middleware and associated timers when no longer needed.Example Usage:
Purpose:
This feature provides server administrators with a powerful tool to manage client request rates effectively, avoiding potential denial-of-service issues caused by excessive or rapid-fire requests.
Linked Issues: