高并发 · 低延迟 · 易集成
十分钟为你的gin框架提供WebSocket能力,提供简洁的API和丰富的功能特性。
基于事件驱动架构,支持百万级并发连接,内存占用极低,CPU使用率优化。
提供直观的API设计,支持多种编程语言,快速集成到现有项目中。
内置安全机制,支持SSL/TLS加密,提供完善的监控和日志系统。
支持水平扩展,提供插件机制,可根据业务需求灵活定制功能。
// 安装cli命令
go install github.com/wonli/aqi/cmd/aqi@latest   
// 新建项目
aqi new a1
// 初始化
cd a1 && go mod tidy
// 运行(第一次运行自动生成config-dev.yaml配置文件)
go run main.go api
// 编译,支持window,linux,darwin(mac)交叉编译,详见Makefile
make darwin// golang
func main() {
	app := aqi.Init(
		aqi.ConfigFile("config.yaml"),
		aqi.HttpServer("Aqi", "port"),
	)
	engine := gin.Default()
	engine.GET("/", func(c *gin.Context) {
		c.String(http.StatusOK, "Hi aqi!")
	})
	// Websocket
	engine.GET("/ws", func(c *gin.Context) {
		ws.HttpHandler(c.Writer, c.Request)
	})
	// Router
	wsr := ws.NewRouter()
	wsr.Add("hi", func(a *ws.Context) {
		a.Send(ws.H{
			"hi": time.Now(),
		})
	})
	app.WithHttpServer(engine)
	app.Start()
}// JavaScript客户端连接
import { onConnect, onDisconnect, onReconnectLimit, onRequest, onResponse, onConnectError } from './modules/event'
import Ws from './wslib'
import sys from './modules/sys'
import chat from './modules/chat'
import job from './modules/job'
const dispatcher =   {
  onConnect,
  onDisconnect,
  onRequest,
  onResponse,
  onReconnectLimit,
  onConnectError,
  reconnectInterval: 5000,
  reconnectLimit: 200,
  dispatcher: () => {
    return { sys,chat,job }
  }
}
const wsclient = new Ws("ws://localhost:2015", dispatcher);
export default wsclient;
// config_dev.yaml
port: 2015
devMode: true
jwtSecurity: 6a63dd4345506823e51f4f36f99b80ea
jwtLifetime: 30d
log:
  logFile: error.log
  logPath: logs
  maxSize: 200
  maxBackups: 3
  maxAge: 30
  compress: true
  useCaller: true
redis:
  store:
    addr: 127.0.0.1:6379
    username: ""
    pwd: ""
    db: 1
    minIdleConns: 10
    idleTimeout: 5m0s