aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/ApiManagers/UserManager.ts10
-rw-r--r--src/server/websocket.ts13
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;