Skip to content

Commit 016b8ef

Browse files
Added archive for admin
1 parent 2632bb5 commit 016b8ef

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

archive/stream_admin.go.archive

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package session
2+
3+
import (
4+
"context"
5+
"time"
6+
7+
"github.com/gorilla/websocket"
8+
)
9+
10+
/* ==== User Sessions ==== */
11+
12+
/* send list of all sesssions */
13+
func (m *Manager) sendListofAllSessions(conn *websocket.Conn, limit int) error {
14+
ctx := context.Background()
15+
16+
/* cursor for navigating Redis Scan */
17+
var cursor uint64
18+
19+
/* store all sessions keys here */
20+
var sessionKeys []string
21+
22+
/* get all the session keys in the whole Redis database */
23+
for {
24+
keys, nextCursor, err := m.redis.Scan(ctx, cursor, "session:*", 100).Result()
25+
if err != nil {
26+
message := StreamMessage{
27+
Type: "sessions_list",
28+
Data: map[string]any{
29+
"exists": false,
30+
},
31+
Timestamp: time.Now(),
32+
}
33+
return conn.WriteJSON(message)
34+
}
35+
36+
sessionKeys = append(sessionKeys, keys...)
37+
cursor = nextCursor
38+
if cursor == 0 {
39+
break
40+
}
41+
}
42+
43+
/* will contain data about all the sessions */
44+
var sessions []SessionStreamData
45+
46+
/* get data about all the session from Redis */
47+
for _, key := range sessionKeys {
48+
49+
/* get session data from Redis */
50+
sessionData, err := m.redis.HGetAll(ctx, key).Result()
51+
if err != nil || len(sessionData) == 0 {
52+
continue
53+
}
54+
55+
/* deserialize into SessionStreamData */
56+
session := convertRedisHashToSession(sessionData)
57+
58+
sessions = append(sessions, session)
59+
}
60+
61+
/* build the message with all sessions data */
62+
message := StreamMessage{
63+
Type: "sessions_list",
64+
Data: map[string]any{
65+
"sessions": sessions,
66+
},
67+
Timestamp: time.Now(),
68+
}
69+
70+
return conn.WriteJSON(message)
71+
}

0 commit comments

Comments
 (0)