直接在main.go文件写入
package main
// MaxAllowed 中间件 限流器
func MaxAllowed(limitValue int) func (p *ghttp.Request){
r := ratelimit.NewRule()
r.AddRule(time.Second, limitValue) //每1秒只允许访问 limitValue 次
//r.AddRule(time.Second*10, 8) //每10秒只允许访问8次
//r.AddRule(time.Minute*30, 50) //每30分钟只允许访问50次
//r.AddRule(time.Hour*24, 500) //每天只允许访问500次
return func(p *ghttp.Request) {
UserIP := tools.GetCurrentIP(p)
if !r.AllowVisitByIP4(UserIP) {
p.Response.CORSDefault()
p.Response.ClearBuffer()
p.Response.Writeln(tools.JsonResponse{
Code: 1,
Message : "100000",
Data: nil,
Version: tools.VersionNumber,
})
} else {
p.Middleware.Next()
}
}
}
func main() {
s := g.Server()
s.Use(MaxAllowed(2)) //限流器
s.SetPort(10018)
s.Run()
}