feat(websocket): integrate WebSocket support and refactor SSE handling
- 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:
@@ -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)
|
||||
}
|
||||
|
||||
// 消息操作路由
|
||||
|
||||
Reference in New Issue
Block a user