Browse Source

fix: active users

Timothy J. Baek 11 months ago
parent
commit
7cf80289c3
2 changed files with 23 additions and 1 deletions
  1. 20 0
      backend/apps/socket/main.py
  2. 3 1
      src/routes/auth/+page.svelte

+ 20 - 0
backend/apps/socket/main.py

@@ -31,6 +31,26 @@ async def connect(sid, environ, auth):
             await sio.emit("user-count", {"count": len(set(USER_POOL))})
 
 
+@sio.on("user-join")
+async def user_join(sid, data):
+    print("user-join", sid, data)
+
+    auth = data["auth"] if "auth" in data else None
+
+    if auth and "token" in auth:
+        data = decode_token(auth["token"])
+
+        if data is not None and "id" in data:
+            user = Users.get_user_by_id(data["id"])
+
+        if user:
+            USER_POOL[sid] = user.id
+            print(f"user {user.name}({user.id}) connected with session ID {sid}")
+
+            print(len(set(USER_POOL)))
+            await sio.emit("user-count", {"count": len(set(USER_POOL))})
+
+
 @sio.on("user-count")
 async def user_count(sid):
     print("user-count", sid)

+ 3 - 1
src/routes/auth/+page.svelte

@@ -3,7 +3,7 @@
 	import { userSignIn, userSignUp } from '$lib/apis/auths';
 	import Spinner from '$lib/components/common/Spinner.svelte';
 	import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants';
-	import { WEBUI_NAME, config, user } from '$lib/stores';
+	import { WEBUI_NAME, config, user, socket } from '$lib/stores';
 	import { onMount, getContext } from 'svelte';
 	import { toast } from 'svelte-sonner';
 	import { generateInitialsImage, canvasPixelTest } from '$lib/utils';
@@ -22,6 +22,8 @@
 			console.log(sessionUser);
 			toast.success($i18n.t(`You're now logged in.`));
 			localStorage.token = sessionUser.token;
+
+			$socket.emit('user-join', { auth: { token: sessionUser.token } });
 			await user.set(sessionUser);
 			goto('/');
 		}