Skip to main content

OpraSocketioModule

NestJS dynamic module that wires OPRA's Socket.IO adapter into a NestJS application.

import { OpraSocketioModule } from '@opra/nestjs-socketio';

forRoot(options)​

Synchronous registration:

import { Module } from '@nestjs/common';
import { OpraSocketioModule } from '@opra/nestjs-socketio';
import { NotificationsController } from './controllers/notifications.controller.js';

@Module({
imports: [
OpraSocketioModule.forRoot({
name: 'NotificationsApi',
port: 3001,
controllers: [NotificationsController],
}),
],
})
export class AppModule {}

Options (OpraSocketioModule.ModuleOptions)​

OptionTypeDescription
namestringAPI name.
descriptionstringOptional API description.
scopestringValidation scope.
portnumberPort the Socket.IO server listens on.
serverOptionsPartial<socketio.ServerOptions>Socket.IO server options (CORS, path, transports…).
typesType[]Data types to register on the ApiDocument.
referencesobjectType references.
infoobjectAPI info metadata.
controllersType[]OPRA WebSocket controller classes.
providersProvider[]Additional NestJS providers.
exportsany[]Providers to export.
importsany[]Modules to import.
globalbooleanRegister globally.
tokenanyCustom injection token.
interceptors(InterceptorFunction | IWSInterceptor | Type<IWSInterceptor>)[]Request interceptors.
loggerLoggerCustom logger.

forRootAsync(options)​

Asynchronous registration:

OpraSocketioModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
name: 'NotificationsApi',
port: config.get<number>('WS_PORT'),
serverOptions: { cors: { origin: config.get('ALLOWED_ORIGINS') } },
controllers: [NotificationsController],
}),
})

Options (OpraSocketioModule.AsyncModuleOptions)​

OptionTypeDescription
injectany[]Providers to inject into useFactory.
useFactory(...args) => ApiConfig | Promise<ApiConfig>Factory returning the API configuration.

Plus all non-API fields from ModuleOptions.