feat(websocket): integrate WebSocket support and refactor SSE handling
All checks were successful
Build Backend / build (push) Successful in 18m57s
Build Backend / build-docker (push) Successful in 1m4s

- Added WebSocket support by introducing a new WSHandler and related infrastructure.
- Replaced SSE implementations with WebSocket equivalents across message and QR code handlers.
- Updated service and repository layers to utilize WebSocket for real-time messaging.
- Removed obsolete SSE hub and related code, streamlining the application for WebSocket usage.
- Enhanced router to include WebSocket endpoints for real-time communication.
This commit is contained in:
lafay
2026-03-26 21:17:49 +08:00
parent c6848aba06
commit 6d335e393d
19 changed files with 1277 additions and 315 deletions

View File

@@ -34,6 +34,7 @@ type Router struct {
adminLogHandler *handler.AdminLogHandler
qrcodeHandler *handler.QRCodeHandler
materialHandler *handler.MaterialHandler
wsHandler *handler.WSHandler
logService *service.LogService
jwtService *service.JWTService
casbinService service.CasbinService
@@ -67,6 +68,7 @@ func New(
logService *service.LogService,
activityService service.UserActivityService,
casbinService service.CasbinService,
wsHandler *handler.WSHandler,
) *Router {
// 设置JWT服务
userHandler.SetJWTService(jwtService)
@@ -100,6 +102,7 @@ func New(
logService: logService,
jwtService: jwtService,
casbinService: casbinService,
wsHandler: wsHandler,
}
r.setupRoutes()
@@ -194,7 +197,7 @@ func (r *Router) setupRoutes() {
qrcode := v1.Group("/auth/qrcode")
{
qrcode.GET("", r.qrcodeHandler.GetQRCode)
qrcode.GET("/events", r.qrcodeHandler.SSEEvents)
qrcode.GET("/events", r.qrcodeHandler.WSEvents)
}
// 二维码操作(需认证)
@@ -327,9 +330,9 @@ func (r *Router) setupRoutes() {
}
realtime := v1.Group("/realtime")
realtime.Use(authMiddleware)
{
realtime.GET("/sse", r.messageHandler.HandleSSE)
// WebSocket端点 - 在中间件之前处理认证通过query参数
realtime.GET("/ws", r.wsHandler.HandleWebSocket)
}
// 消息操作路由