ausheng

goframe利用中间件实现限流器(代码)

直接在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()
}

ausheng

爱生活,爱编程

AUSHENG – BLOG

不要害羞,保持联系。我们喜欢结识有趣的人,结交新朋友。