Files
OpenFlare/openflare_server/service/flared_ws.go
T
2026-06-01 08:38:31 +08:00

55 lines
1.3 KiB
Go

package service
import (
"log/slog"
)
var DefaultFlaredWSHub = NewWSHub("flared")
func RegisterFlaredWSClient(tunnelID string) *WSClient {
return DefaultFlaredWSHub.Register(tunnelID)
}
func UnregisterFlaredWSClient(client *WSClient) {
DefaultFlaredWSHub.Unregister(client)
}
func IsFlaredWSConnected(tunnelID string) bool {
return DefaultFlaredWSHub.IsConnected(tunnelID)
}
func SendFlaredWSPong(tunnelID string) bool {
return DefaultFlaredWSHub.SendMessage(tunnelID, WSMessage{
Type: "pong",
})
}
func SendFlaredWSActiveConfig(tunnelID string, activeConfig *ActiveConfigMeta) bool {
if activeConfig == nil {
return false
}
return DefaultFlaredWSHub.SendMessage(tunnelID, WSMessage{
Type: "active_config",
Payload: activeConfig,
})
}
func BroadcastFlaredWSActiveConfig(activeConfig *ActiveConfigMeta) WSBroadcastResult {
if activeConfig == nil {
slog.Debug("flared ws broadcast skipped because active config is nil")
return WSBroadcastResult{}
}
res := DefaultFlaredWSHub.Broadcast(WSMessage{
Type: "active_config",
Payload: activeConfig,
})
slog.Debug("flared ws broadcast active config",
"version", activeConfig.Version,
"checksum", activeConfig.Checksum,
"client_count", res.ClientCount,
"success_count", res.SuccessCount,
"failed_tunnels", res.FailedIDs,
)
return res
}