高并发 · 低延迟 · 易集成
十分钟为你的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