# air **Repository Path**: sdxstar/air ## Basic Information - **Project Name**: air - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-08-21 - **Last Updated**: 2022-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # air #### 介绍 TCP框架,内部协议, 支持事件,分组,中间件 #### 使用说明 1. go get gitee.com/sdxstar/air 2. `
s, err := air.NewServer(&air.Options{ Address: address, }) if err != nil { t.Fatal(err) } s.On(air.OnConnect, func(ctx air.Context) error { t.Logf("%s connected, start to check auth", ctx.RemoteAddr()) var reply string err := ctx.Ack("check_auth", nil, &reply) if err != nil { t.Error(err) ctx.Close() return nil } t.Logf("%s", reply) return nil }) s.On(air.OnHeartbeat, func(ctx air.Context) error { return nil }) s.On(air.OnDisconnect, func(ctx air.Context) error { return nil }) s.On(air.OnClose, func(ctx air.Context) error { return nil }) s.Use(middleware.Recover()) s.On("auth", func(ctx air.Context) error { t.Logf("%s auth", ctx.RemoteAddr()) var auth Auth err := ctx.Bind(&auth) if err != nil { ctx.Close() return nil } ctx.Set("Hostname", auth.Hostname) ctx.Join("test") return nil }) authGroup := s.Group(CtxAuth()) authGroup.On("hardware", func(ctx air.Context) error { t.Logf("on hardware: ") var hardware Hardware if err := ctx.Bind(&hardware); err != nil { ctx.Close() return nil } conn.BroadcastTo("test", "", []byte("good")) return ctx.Reply("OK") }) s.Start() `