Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 2x 2x 2x 2x 2x 2x 6x 6x 6x 6x 6x 6x 6x 36x 3x 3x 3x 6x 6x 6x 36x 12x 12x 2x 2x | import Debug from 'debug'; import { channels } from '../channels'; import { routing } from '../routing'; import { getDispatcher, runMethod } from './utils'; import { Application } from '@feathersjs/feathers'; import { RealTimeConnection } from '../channels/channel/base'; const debug = Debug('@feathersjs/transport-commons'); export interface SocketOptions { done: Promise<any>; emit: string; socketKey: any; getParams: (socket: any) => RealTimeConnection; } export function socket({ done, emit, socketKey, getParams }: SocketOptions) { return (app: Application) => { app.configure(channels()); app.configure(routing()); app.on('publish', getDispatcher(emit, socketKey)); // `connection` event done.then(provider => provider.on('connection', (connection: any) => app.emit('connection', getParams(connection))) ); // `socket.emit('methodName', 'serviceName', ...args)` handlers done.then(provider => provider.on('connection', (connection: any) => { for (const method of app.methods) { connection.on(method, (...args: any[]) => { const path = args.shift(); debug(`Got '${method}' call for service '${path}'`); runMethod(app, getParams(connection), path, method, args); }); } })); // Legacy `socket.emit('serviceName::methodName', ...args)` handlers app.mixins.push((service, path) => done.then(provider => { provider.on('connection', (socket: any) => { const methods = app.methods.filter(current => // @ts-ignore typeof service[current] === 'function' ); for (const method of methods) { const eventName = `${path}::${method}`; socket.on(eventName, (...args: any[]) => { debug(`Got legacy method call '${eventName}'`); runMethod(app, getParams(socket), path, method, args); }); } }); })); }; } |