feat: limit max connection count (#2701)
This commit is contained in:
16
server/middlewares/limit.go
Normal file
16
server/middlewares/limit.go
Normal file
@ -0,0 +1,16 @@
|
||||
package middlewares
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func MaxAllowed(n int) gin.HandlerFunc {
|
||||
sem := make(chan struct{}, n)
|
||||
acquire := func() { sem <- struct{}{} }
|
||||
release := func() { <-sem }
|
||||
return func(c *gin.Context) {
|
||||
acquire()
|
||||
defer release()
|
||||
c.Next()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user