UNPKG

@push.rocks/smartsocket

Version:

Provides easy and secure websocket communication mechanisms, including server and client implementation, function call routing, connection management, and tagging.

72 lines 5.89 kB
import * as plugins from './smartsocket.plugins.js'; // import interfaces import { SocketFunction, } from './smartsocket.classes.socketfunction.js'; // import classes import { SocketConnection } from './smartsocket.classes.socketconnection.js'; import { logger } from './smartsocket.logging.js'; import { Smartsocket } from './smartsocket.classes.smartsocket.js'; import { SmartsocketClient } from './smartsocket.classes.smartsocketclient.js'; // export classes export class SocketRequest { // STATIC static getSocketRequestById(smartsocketRef, shortIdArg) { return smartsocketRef.socketRequests.findSync((socketRequestArg) => { return socketRequestArg.shortid === shortIdArg; }); } constructor(smartsocketRefArg, optionsArg) { // INSTANCE this.status = 'new'; this.done = plugins.smartpromise.defer(); this.smartsocketRef = smartsocketRefArg; this.side = optionsArg.side; this.shortid = optionsArg.shortId; this.funcCallData = optionsArg.funcCallData; this.originSocketConnection = optionsArg.originSocketConnection; this.smartsocketRef.socketRequests.add(this); } // requesting -------------------------- /** * dispatches a socketrequest from the requesting to the receiving side */ dispatch() { const requestData = { funcCallData: this.funcCallData, shortId: this.shortid, }; this.originSocketConnection.socket.emit('function', requestData); return this.done.promise; } /** * handles the response that is received by the requesting side */ async handleResponse(responseDataArg) { // logger.log('info', 'handling response!'); this.done.resolve(responseDataArg.funcCallData); this.smartsocketRef.socketRequests.remove(this); } // responding -------------------------- /** * creates the response on the responding side */ async createResponse() { const targetSocketFunction = SocketFunction.getSocketFunctionByName(this.smartsocketRef, this.funcCallData.funcName); if (!targetSocketFunction) { logger.log('error', `There is no SocketFunction defined for ${this.funcCallData.funcName}`); return; } // logger.log('info', `invoking ${targetSocketFunction.name}`); targetSocketFunction .invoke(this.funcCallData, this.originSocketConnection) .then((resultData) => { // logger.log('info', 'got resultData. Sending it to requesting party.'); const responseData = { funcCallData: resultData, shortId: this.shortid, }; this.originSocketConnection.socket.emit('functionResponse', responseData); this.smartsocketRef.socketRequests.remove(this); }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFFcEQsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCxjQUFjLEdBR2YsTUFBTSx5Q0FBeUMsQ0FBQztBQUVqRCxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQTJCL0UsaUJBQWlCO0FBQ2pCLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFNBQVM7SUFDRixNQUFNLENBQUMsb0JBQW9CLENBQ2hDLGNBQStDLEVBQy9DLFVBQWtCO1FBRWxCLE9BQU8sY0FBYyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ2pFLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFZRCxZQUNFLGlCQUFrRCxFQUNsRCxVQUErQztRQVpqRCxXQUFXO1FBQ0osV0FBTSxHQUF5QixLQUFLLENBQUM7UUFLckMsU0FBSSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFzQyxDQUFDO1FBUTdFLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDNUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQztRQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELHdDQUF3QztJQUV4Qzs7T0FFRztJQUNJLFFBQVE7UUFDYixNQUFNLFdBQVcsR0FBZ0M7WUFDL0MsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBQ0YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWMsQ0FBQyxlQUE0QztRQUN0RSw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsd0NBQXdDO0lBRXhDOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsTUFBTSxvQkFBb0IsR0FBc0IsY0FBYyxDQUFDLHVCQUF1QixDQUNwRixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDM0IsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDBDQUEwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUYsT0FBTztRQUNULENBQUM7UUFDRCwrREFBK0Q7UUFDL0Qsb0JBQW9CO2FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQzthQUN0RCxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNuQix5RUFBeUU7WUFDekUsTUFBTSxZQUFZLEdBQWdDO2dCQUNoRCxZQUFZLEVBQUUsVUFBVTtnQkFDeEIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ3RCLENBQUM7WUFDRixJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0YifQ==