From 64fcb0c62198c51d20a9cded9bcc8bfbd236e3af Mon Sep 17 00:00:00 2001 From: Nandana-NNR Date: Fri, 8 Nov 2024 16:02:48 +0530 Subject: [PATCH] discovery launch changes to check if app is actively connected or not --- CHANGELOG.md | 9 +++++++++ cli/package.json | 2 +- conduit/package.json | 2 +- server/package.json | 2 +- server/src/events.mjs | 2 ++ server/src/messageHandler.mjs | 2 ++ server/src/stateManagement.mjs | 4 +++- server/src/userManagement.mjs | 2 ++ 8 files changed, 21 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bd9f901..df47018d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ # Change Log All notable changes to this project will be documented in this file. +## [1.0.4] - 2024-02-13 + +### Added + +* Added ability to check if an active userid is connected or not to mock-firebolt from yaml file + +### Changed + +* Updated definition of ctx in files to include new function `getWebSocketConnectionForUser` that will internally return `getWsForUser` to check if an active userid is connected or not to mock-firebolt ## [1.0.3] - 2023-11-30 diff --git a/cli/package.json b/cli/package.json index 7eda10ba..d0f71821 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/mock-firebolt-cli", - "version": "1.0.3", + "version": "1.0.4", "description": "Command-line interface for controlling the Mock Firebolt server", "main": "./src/cli.mjs", "scripts": {}, diff --git a/conduit/package.json b/conduit/package.json index 184eb4b0..0243880f 100644 --- a/conduit/package.json +++ b/conduit/package.json @@ -1,7 +1,7 @@ { "name": "conduit", "description": "A TV app that works in concert with Mock Firebolt in Reverse Proxy mode", - "version": "1.0.3", + "version": "1.0.4", "private": true, "license": "Apache 2.0", "author": "Mike Fine ", diff --git a/server/package.json b/server/package.json index 1756cdeb..5e680edf 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/mock-firebolt", - "version": "1.0.3", + "version": "1.0.4", "description": "Controllable mock Firebolt server", "main": "./build/index.mjs", "scripts": { diff --git a/server/src/events.mjs b/server/src/events.mjs index 740acbf3..da06169e 100644 --- a/server/src/events.mjs +++ b/server/src/events.mjs @@ -341,6 +341,7 @@ function coreSendEvent(isBroadcast, ws, userId, method, result, msg, fSuccess, f setInterval: setInterval, set: function ss(key, val, scope) { return stateManagement.setScratch(userId, key, val, scope) }, get: function gs(key) { return stateManagement.getScratch(userId, key); }, + getWebSocketConnectionForUser: function gw(userId) { return userManagement.getWsForUser(userId) }, delete: function ds(key, scope) { return stateManagement.deleteScratch(userId, key, scope)}, closeConnection: function cc() {return userManagement.closeConnection(userId, ws)}, closeAllConnections: function closeallconn() {return userManagement.closeAllConnections(userId)}, @@ -373,6 +374,7 @@ function coreSendEvent(isBroadcast, ws, userId, method, result, msg, fSuccess, f setInterval: setInterval, set: function ss(key, val, scope) { return stateManagement.setScratch(userId, key, val, scope) }, get: function gs(key) { return stateManagement.getScratch(userId, key); }, + getWebSocketConnectionForUser: function gw(userId) { return userManagement.getWsForUser(userId) }, delete: function ds(key, scope) { return stateManagement.deleteScratch(userId, key, scope)}, closeConnection: function cc() {return userManagement.closeConnection(userId, ws)}, closeAllConnections: function closeallconn() {return userManagement.closeAllConnections(userId)}, diff --git a/server/src/messageHandler.mjs b/server/src/messageHandler.mjs index aafaeb6e..b8bf8421 100644 --- a/server/src/messageHandler.mjs +++ b/server/src/messageHandler.mjs @@ -182,6 +182,7 @@ async function handleMessage(message, userId, ws) { setInterval: setInterval, set: function ss(key, val, scope) { return stateManagement.setScratch(userId, key, val, scope) }, get: function gs(key) { return stateManagement.getScratch(userId, key); }, + getWebSocketConnectionForUser: function gw(userId) { return userManagement.getWsForUser(userId) }, delete: function ds(key, scope) { return stateManagement.deleteScratch(userId, key, scope)}, delay: function delay(ms){ return util.delay(ms) }, closeConnection: function cc() {return userManagement.closeConnection(userId, ws)}, @@ -290,6 +291,7 @@ async function handleMessage(message, userId, ws) { setInterval: setInterval, set: function ss(key, val, scope) { return stateManagement.setScratch(userId, key, val, scope) }, get: function gs(key) { return stateManagement.getScratch(userId, key); }, + getWebSocketConnectionForUser: function gw(userId) { return userManagement.getWsForUser(userId) }, delete: function ds(key, scope) { return stateManagement.deleteScratch(userId, key, scope)}, closeConnection: function cc() {return userManagement.closeConnection(userId,ws)}, closeAllConnections: function closeallconn() {return userManagement.closeAllConnections(userId)}, diff --git a/server/src/stateManagement.mjs b/server/src/stateManagement.mjs index be2ee7b1..aaf5ad92 100644 --- a/server/src/stateManagement.mjs +++ b/server/src/stateManagement.mjs @@ -29,7 +29,7 @@ import * as commonErrors from './commonErrors.mjs'; import * as util from './util.mjs'; import { sendBroadcastEvent, sendEvent, logSuccess, logErr, logFatalErr } from './events.mjs'; import { v4 as uuidv4 } from 'uuid'; -import { parseUser, closeConnection, closeAllConnections } from './userManagement.mjs'; +import { parseUser, closeConnection, closeAllConnections, getWsForUser } from './userManagement.mjs'; const Mode = { BOX: 'BOX', // Log settrs, return default defaults for each gettr based on first example within OpenRPC specification @@ -242,6 +242,7 @@ async function handleDynamicResponseValues(userId, methodName, params, ws, resp) setInterval: setInterval, set: function ss(key, val, scope) { return setScratch(userId, key, val, scope) }, get: function gs(key) { return getScratch(userId, key); }, + getWebSocketConnectionForUser: function gw(userId) { return getWsForUser(userId) }, delete: function ds(key, scope) { return deleteScratch(userId, key, scope)}, delay: function delay(ms){ return util.delay(ms) }, closeConnection: function cc() {return closeConnection(userId, ws)}, @@ -317,6 +318,7 @@ async function handleStaticAndDynamicResult(userId, methodName, params, resp){ const ctx = { set: function ss(key, val, scope) { return setScratch(userId, key, val, scope) }, get: function gs(key) { return getScratch(userId, key); }, + getWebSocketConnectionForUser: function gw(userId) { return getWsForUser(userId) }, delete: function ds(key, scope) { return deleteScratch(userId, key, scope)}, uuid: function cuuid() {return createUuid()}, }; diff --git a/server/src/userManagement.mjs b/server/src/userManagement.mjs index e45347ec..ca7dc432 100644 --- a/server/src/userManagement.mjs +++ b/server/src/userManagement.mjs @@ -95,9 +95,11 @@ function getWssForUser(userId) { function getWsForUser(userId) { if ( user2ws.has(''+userId) ) { let wsArray=user2ws.get(''+userId); + if (wsArray && wsArray.length > 0) { let latestWsConnection=wsArray[(wsArray.length-1)] return latestWsConnection; } +} return undefined; }