diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/ApiManagers/UserManager.ts | 10 | ||||
| -rw-r--r-- | src/server/websocket.ts | 13 |
2 files changed, 19 insertions, 4 deletions
diff --git a/src/server/ApiManagers/UserManager.ts b/src/server/ApiManagers/UserManager.ts index f36506b14..fe80c6a7c 100644 --- a/src/server/ApiManagers/UserManager.ts +++ b/src/server/ApiManagers/UserManager.ts @@ -4,6 +4,7 @@ import { Database } from "../database"; import { msToTime } from "../ActionUtilities"; import * as bcrypt from "bcrypt-nodejs"; import { Opt } from "../../fields/Doc"; +import { WebSocket } from "../websocket"; export const timeMap: { [id: string]: number } = {}; interface ActivityUnit { @@ -131,9 +132,12 @@ export default class UserManager extends ApiManager { for (const user in timeMap) { const time = timeMap[user]; - const duration = now - time; - const target = (duration / 1000) < (60 * 5) ? activeTimes : inactiveTimes; - target.push({ user, duration }); + const socketPair = Array.from(WebSocket.socketMap).find(pair => pair[1] === user); + if (socketPair && !socketPair[0].disconnected) { + const duration = now - time; + const target = (duration / 1000) < (60 * 5) ? activeTimes : inactiveTimes; + target.push({ user, duration }); + } } const process = (target: { user: string, duration: number }[]) => { diff --git a/src/server/websocket.ts b/src/server/websocket.ts index 13d7237f6..0c79c1bbb 100644 --- a/src/server/websocket.ts +++ b/src/server/websocket.ts @@ -187,7 +187,7 @@ export namespace WebSocket { + currentdate.getMinutes() + ":" + currentdate.getSeconds(); console.log(blue(`user ${userEmail} has connected to the web socket at: ${datetime}`)); - socketMap.set(socket, userEmail); + socketMap.set(socket, userEmail + " at " + datetime); } function getField([id, callback]: [string, (result?: Transferable) => void]) { @@ -338,7 +338,18 @@ export namespace WebSocket { if (!pendingOps.get(id)!.length) pendingOps.delete(id); } + function printActiveUsers() { + socketMap.forEach((user, socket) => { + !socket.disconnected && console.log(user); + }); + } + var CurUser: string | undefined = undefined; + function UpdateField(socket: Socket, diff: Diff) { + if (CurUser !== socketMap.get(socket)) { + CurUser = socketMap.get(socket); + console.log("Switch User: " + CurUser); + } if (pendingOps.has(diff.id)) { pendingOps.get(diff.id)!.push({ diff, socket }); return true; |
