diff --git a/src/sockets.js b/src/sockets.js index 272e7d75..2e41ad0f 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -3,9 +3,11 @@ const logger = require("winston"); module.exports = ( + /** @type {import('socket.io').Server} */ io, lnd, ) => { + const Mediator = require("../services/gunDB/Mediator/index.js"); const EventEmitter = require("events"); @@ -42,25 +44,49 @@ module.exports = ( io.on("connection", socket => { logger.info(`io.onconnection`) - // this is where we create the websocket connection - // with the GunDB service. - Mediator.createMediator(socket); - - logger.info(`socket after createmediator`) - logger.info("socket.handshake", socket.handshake); /** printing out the client who joined */ logger.info("New socket client connected (id=" + socket.id + ")."); - registerSocketListeners(socket); + const isOneTimeUseSocket = !!socket.handshake.query.IS_GUN_AUTH - /** listening if client has disconnected */ - socket.on("disconnect", () => { - unregisterSocketListeners(socket); - logger.info("client disconnected (id=" + socket.id + ")."); - }); - }); + if (isOneTimeUseSocket) { + logger.info('New socket is one time use') + socket.on('IS_GUN_AUTH', () => { + try { + const isGunAuth = Mediator.isAuthenticated() + socket.emit('IS_GUN_AUTH', { + ok: true, + msg: { + isGunAuth + }, + origBody: {} + }) + socket.disconnect() + } catch (err) { + socket.emit('IS_GUN_AUTH', { + ok: false, + msg: err.message, + origBody: {} + }) + socket.disconnect() + } + }) + } else { + logger.info('New socket is NOT one time use') + // this is where we create the websocket connection + // with the GunDB service. + Mediator.createMediator(socket); + registerSocketListeners(socket); + + /** listening if client has disconnected */ + socket.on("disconnect", () => { + unregisterSocketListeners(socket); + logger.info("client disconnected (id=" + socket.id + ")."); + }); + } + }) return mySocketsEvents; };