* Register a socketio controller * @param controllerClass * @param meta
(
controllerClass: Constructor<object>,
meta?: SocketIoMetadata | string | RegExp,
)
| 138 | * @param meta |
| 139 | */ |
| 140 | route( |
| 141 | controllerClass: Constructor<object>, |
| 142 | meta?: SocketIoMetadata | string | RegExp, |
| 143 | ) { |
| 144 | if (meta instanceof RegExp || typeof meta === 'string') { |
| 145 | meta = {namespace: meta} as SocketIoMetadata; |
| 146 | } |
| 147 | if (meta == null) { |
| 148 | meta = getSocketIoMetadata(controllerClass) as SocketIoMetadata; |
| 149 | } |
| 150 | const nsp = meta?.namespace ? this.io.of(meta.namespace) : this.io; |
| 151 | if (meta?.name) { |
| 152 | this.app.bind(getNamespaceKeyForName(meta.name)).to(nsp); |
| 153 | } |
| 154 | |
| 155 | nsp.on('connection', async socket => { |
| 156 | await this.createSocketHandler(controllerClass)(socket); |
| 157 | }); |
| 158 | return nsp; |
| 159 | } |
| 160 | |
| 161 | /** |
| 162 | * Create socket handler from the controller class |