From df17cd73af30c11727f451b48bace1d7a8a1846f Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 28 Oct 2022 22:06:33 +0000 Subject: [PATCH] implement internal events --- packages/server/src/events/index.js | 7 +++++++ packages/server/src/events/user_connected.js | 19 +++++++++++++++++++ .../server/src/events/user_disconnected.js | 19 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 packages/server/src/events/index.js create mode 100644 packages/server/src/events/user_connected.js create mode 100644 packages/server/src/events/user_disconnected.js diff --git a/packages/server/src/events/index.js b/packages/server/src/events/index.js new file mode 100644 index 00000000..54865467 --- /dev/null +++ b/packages/server/src/events/index.js @@ -0,0 +1,7 @@ +import user_connected from "./user_connected" +import user_disconnected from "./user_disconnected" + +export default { + "user.connected": user_connected, + "user.disconnected": user_disconnected, +} \ No newline at end of file diff --git a/packages/server/src/events/user_connected.js b/packages/server/src/events/user_connected.js new file mode 100644 index 00000000..771f7a2e --- /dev/null +++ b/packages/server/src/events/user_connected.js @@ -0,0 +1,19 @@ +import { UserFollow } from "../models" + +export default async (user_id) => { + // get followers of the user + const followers = await UserFollow.find({ + to: user_id, + }) + + // send event to ws clients (if are connected) + followers.forEach((follow) => { + const connectedClient = global.wsInterface.clients.find((client) => { + return client.user_id === follow.user_id + }) + + if (connectedClient) { + connectedClient.socket.emit("friend.connected", user_id) + } + }) +} \ No newline at end of file diff --git a/packages/server/src/events/user_disconnected.js b/packages/server/src/events/user_disconnected.js new file mode 100644 index 00000000..aca0d317 --- /dev/null +++ b/packages/server/src/events/user_disconnected.js @@ -0,0 +1,19 @@ +import { UserFollow } from "../models" + +export default async (user_id) => { + // get followers of the user + const followers = await UserFollow.find({ + to: user_id, + }) + + // send event to ws clients (if are connected) + followers.forEach((follow) => { + const connectedClient = global.wsInterface.clients.find((client) => { + return client.user_id === follow.user_id + }) + + if (connectedClient) { + connectedClient.socket.emit("friend.disconnected", user_id) + } + }) +} \ No newline at end of file