package redis import ( "context" gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper" "github.com/redis/go-redis/v9" ) var ctx = context.Background() var rdb *redis.Client func Init() { rdb = redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", DB: 0, }) err := rdb.Ping(ctx).Err() if err != nil { gocnjhelper.LogFatal("Redis ping failed") } } func AddUserWebSocketSessionId(userId string, wsSessionId string) (sessionAlreadyConnected bool) { res, err := rdb.SAdd(ctx, userId, wsSessionId).Result() if err != nil { gocnjhelper.LogErrorf("Failed to add key, err: %s", err.Error()) } gocnjhelper.LogDebugf("redis SAdd %v", res, userId, wsSessionId) return res == 0 } func RemoveUserWebSocketSessionId(userId string, wsSessionId string) { res, err := rdb.SRem(ctx, userId, wsSessionId).Result() if err != nil { gocnjhelper.LogErrorf("Failed to rem key, err: %s", err.Error()) } gocnjhelper.LogDebugf("redis rem key %v", res) } func IsUserConnectedToAnyWebSocketServer(userId string) bool { sessions, err := rdb.SMembers(ctx, userId).Result() if err != nil { gocnjhelper.LogErrorf("SMembers, err: %s", err.Error()) return false } return len(sessions) > 0 } func ExistsUserWebSocketSessionId(userId string, wsSessionId string) bool { res, err := rdb.SIsMember(ctx, userId, wsSessionId).Result() if err != nil { gocnjhelper.LogErrorf("SIsMember, err: %s", err.Error()) return false } return res }