diff --git a/packages/socketio/package.json b/packages/socketio/package.json index 524af33699..ae21229ee0 100644 --- a/packages/socketio/package.json +++ b/packages/socketio/package.json @@ -55,6 +55,7 @@ "dependencies": { "@feathersjs/commons": "^5.0.0-pre.28", "@feathersjs/feathers": "^5.0.0-pre.28", + "@feathersjs/hooks": "^0.7.5", "@feathersjs/transport-commons": "^5.0.0-pre.28", "socket.io": "^4.5.1" }, diff --git a/packages/socketio/src/index.ts b/packages/socketio/src/index.ts index 859114adb0..0f820c6e84 100644 --- a/packages/socketio/src/index.ts +++ b/packages/socketio/src/index.ts @@ -3,6 +3,7 @@ import { Server, ServerOptions } from 'socket.io' import { createDebug } from '@feathersjs/commons' import { Application } from '@feathersjs/feathers' import { socket } from '@feathersjs/transport-commons' +import { hooks, middleware } from '@feathersjs/hooks' import { disconnect, params, authentication, FeathersSocket } from './middleware' @@ -87,6 +88,10 @@ function configureSocketio(port?: any, options?: any, config?: any) { return setup.call(this, server, ...rest) } }) + + hooks(app, { + setup: middleware().params('server').props({ app }) + }) }) app.configure( diff --git a/packages/socketio/test/index.test.ts b/packages/socketio/test/index.test.ts index 6b6fde1d6f..95ad21331a 100644 --- a/packages/socketio/test/index.test.ts +++ b/packages/socketio/test/index.test.ts @@ -1,5 +1,5 @@ import { strict as assert } from 'assert' -import { feathers, Application, HookContext, NullableId, Params } from '@feathersjs/feathers' +import { feathers, Application, HookContext, NullableId, Params, ApplicationHookContext } from '@feathersjs/feathers' import express from '@feathersjs/express' import { Request, Response } from 'express' import { omit, extend } from 'lodash' @@ -80,6 +80,15 @@ describe('@feathersjs/socketio', () => { } }) + app.hooks({ + setup: [ + async (context: ApplicationHookContext, next: NextFunction) => { + assert.notStrictEqual(context.app, undefined) + await next() + } + ] + }) + app.listen(7886).then((srv) => { server = srv server.once('listening', () => { @@ -90,7 +99,7 @@ describe('@feathersjs/socketio', () => { } }) }) - }) + }).catch(done) socket = io('http://localhost:7886') socket.on('connect', () => done())