mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2026-05-31 08:30:00 +08:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package event
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/uozi-tech/cosy/logger"
|
|
)
|
|
|
|
// WebSocketHubManager manages WebSocket hub initialization and context handling
|
|
type WebSocketHubManager struct {
|
|
ctx context.Context
|
|
cancel context.CancelFunc
|
|
}
|
|
|
|
var (
|
|
wsHubManager *WebSocketHubManager
|
|
)
|
|
|
|
// InitWebSocketHub initializes the WebSocket hub with proper context handling
|
|
func InitWebSocketHub(ctx context.Context) {
|
|
logger.Info("Initializing WebSocket hub...")
|
|
|
|
hubCtx, cancel := context.WithCancel(ctx)
|
|
wsHubManager = &WebSocketHubManager{
|
|
ctx: hubCtx,
|
|
cancel: cancel,
|
|
}
|
|
|
|
logger.Info("WebSocket hub initialized successfully")
|
|
|
|
// Wait for context cancellation
|
|
go func() {
|
|
<-hubCtx.Done()
|
|
logger.Info("WebSocket hub context cancelled")
|
|
}()
|
|
}
|
|
|
|
// GetWebSocketContext returns the WebSocket hub context
|
|
func GetWebSocketContext() context.Context {
|
|
if wsHubManager == nil {
|
|
return context.Background()
|
|
}
|
|
return wsHubManager.ctx
|
|
}
|
|
|
|
// ShutdownWebSocketHub gracefully shuts down the WebSocket hub
|
|
func ShutdownWebSocketHub() {
|
|
if wsHubManager != nil {
|
|
wsHubManager.cancel()
|
|
logger.Info("WebSocket hub shutdown completed")
|
|
}
|
|
} |