mirror of
https://github.com/yunginnanet/Rate5
synced 2024-06-28 18:11:01 +00:00
_examples | ||
go.mod | ||
go.sum | ||
LICENSE | ||
models.go | ||
ratelimiter_test.go | ||
ratelimiter.go | ||
README.md |
Rate5
A generic ratelimitter for any golang project.
See the docs and the examples below for more details.
Short Example
import rate5 "github.com/yunginnanet/rate5"
var Rater *rate5.Limiter
[...]
type Client struct {
ID string
Conn net.Conn
loggedin bool
}
// Rate5 doesn't care where you derive the string used for ratelimiting
func (c Client) UniqueKey() string {
if !c.loggedin {
host, _, _ := net.SplitHostPort(c.Conn.RemoteAddr().String())
return host
}
return c.ID
}
func (s *Server) handleTCP(c *Client) {
// Returns true if ratelimited
if Rater.Check(c) {
c.Conn.Write([]byte("too many connections"))
c.Conn.Close()
return
}
[...]
In-depth example
Concurrent TCP Server with Rate5 Ratelimiter
To-Do
More Documentation
More To-Dos
Test Cases
Okay. More test cases.