70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
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
|
|
}
|