Skip to content

Commit 87d7f62

Browse files
authored
refac: internals rework (#526)
1 parent bb0ada8 commit 87d7f62

File tree

98 files changed

+2332
-1503
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+2332
-1503
lines changed

README.md

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ Use class-based controllers to handle websocket events. Helps to organize your c
2525
```typescript
2626
import 'reflect-metadata';
2727
```
28+
29+
3. Install a DI container, for example `typedi`;
30+
31+
```
32+
npm install typedi
33+
```
2834

2935
## Example of usage
3036

@@ -39,8 +45,10 @@ Use class-based controllers to handle websocket events. Helps to organize your c
3945
MessageBody,
4046
OnMessage,
4147
} from 'socket-controllers';
48+
import {Service} from 'typedi'; // Only if you are using typedi
4249

4350
@SocketController()
51+
@Service() // Only if you are using typedi
4452
export class MessageController {
4553
@OnConnect()
4654
connection(@ConnectedSocket() socket: any) {
@@ -67,10 +75,13 @@ Use class-based controllers to handle websocket events. Helps to organize your c
6775
```typescript
6876
import 'es6-shim'; // this shim is optional if you are using old version of node
6977
import 'reflect-metadata'; // this shim is required
70-
import { createSocketServer } from 'socket-controllers';
71-
import { MessageController } from './MessageController';
78+
import { SocketControllers } from 'socket-controllers';
79+
import { MessageController } from './MessageController';
80+
import {Container} from 'typedi'; // Only if you are using typedi
7281

73-
createSocketServer(3001, {
82+
new SocketControllers({
83+
port: 3001,
84+
container: Container,
7485
controllers: [MessageController],
7586
});
7687
```
@@ -135,7 +146,7 @@ export class MessageController {
135146

136147
If you specify a class type to parameter that is decorated with `@MessageBody()`,
137148
socket-controllers will use [class-transformer][1] to create instance of the given class type with the data received in the message.
138-
To disable this behaviour you need to specify a `{ useConstructorUtils: false }` in SocketControllerOptions when creating a server.
149+
To disable this behaviour you need to specify a `{ transformOption: { transform: false ] }` in SocketControllerOptions when creating a server.
139150

140151
#### `@SocketQueryParam()` decorator
141152

@@ -266,16 +277,18 @@ If promise returned by controller action, message will be emitted only after pro
266277
#### Using exist server instead of creating a new one
267278

268279
If you need to create and configure socket.io server manually,
269-
you can use `useSocketServer` instead of `createSocketServer` function.
280+
you can pass it to the `SocketControllers` constructor.
270281
Here is example of creating socket.io server and configuring it with express:
271282

272283
```typescript
273284
import 'reflect-metadata'; // this shim is required
274-
import { useSocketServer } from 'socket-controllers';
285+
import { SocketControllers } from 'socket-controllers';
286+
import { Server } from 'socket.io';
287+
import { Container } from 'typedi'; // Only if you are using typedi
275288

276289
const app = require('express')();
277290
const server = require('http').Server(app);
278-
const io = require('socket.io')(server);
291+
const io = new Server(server);
279292

280293
server.listen(3001);
281294

@@ -287,7 +300,7 @@ io.use((socket: any, next: Function) => {
287300
console.log('Custom middleware');
288301
next();
289302
});
290-
useSocketServer(io);
303+
new SocketControllers({io, container: Container});
291304
```
292305

293306
#### Load all controllers from the given directory
@@ -297,9 +310,12 @@ You can load all controllers in once from specific directories, by specifying ar
297310

298311
```typescript
299312
import 'reflect-metadata'; // this shim is required
300-
import { createSocketServer } from 'socket-controllers';
313+
import { SocketControllers } from 'socket-controllers';
314+
import { Container } from 'typedi'; // Only if you are using typedi
301315

302-
createSocketServer(3000, {
316+
new SocketControllers({
317+
port: 3000,
318+
container: Container,
303319
controllers: [__dirname + '/controllers/*.js'],
304320
}); // registers all given controllers
305321
```
@@ -362,10 +378,13 @@ Controllers and middlewares should be loaded:
362378

363379
```typescript
364380
import 'reflect-metadata';
365-
import { createSocketServer } from 'socket-controllers';
381+
import { SocketControllers } from 'socket-controllers';
366382
import { MessageController } from './MessageController';
367383
import { MyMiddleware } from './MyMiddleware'; // here we import it
368-
let io = createSocketServer(3000, {
384+
import { Container } from 'typedi'; // Only if you are using typedi
385+
const server = new SocketControllers({
386+
port: 3000,
387+
container: Container,
369388
controllers: [MessageController],
370389
middlewares: [MyMiddleware],
371390
});
@@ -375,10 +394,13 @@ Also you can load them from directories. Also you can use glob patterns:
375394

376395
```typescript
377396
import 'reflect-metadata';
378-
import { createSocketServer } from 'socket-controllers';
379-
let io = createSocketServer(3000, {
380-
controllers: [__dirname + '/controllers/**/*.js'],
381-
middlewares: [__dirname + '/middlewares/**/*.js'],
397+
import { SocketControllers } from 'socket-controllers';
398+
import { Container } from 'typedi'; // Only if you are using typedi
399+
const server = new SocketControllers({
400+
port: 3000,
401+
container: Container,
402+
controllers: [__dirname + '/controllers/**/*.js'],
403+
middlewares: [__dirname + '/middlewares/**/*.js'],
382404
});
383405
```
384406

@@ -390,15 +412,13 @@ Here is example how to integrate socket-controllers with [typedi](https://github
390412

391413
```typescript
392414
import 'reflect-metadata';
393-
import { createSocketServer, useContainer } from 'socket-controllers';
415+
import { SocketControllers } from 'socket-controllers';
394416
import { Container } from 'typedi';
395417

396-
// its important to set container before any operation you do with socket-controllers,
397-
// including importing controllers
398-
useContainer(Container);
399-
400418
// create and run socket server
401-
let io = createSocketServer(3000, {
419+
const server = new SocketControllers({
420+
port: 3000,
421+
container: Container,
402422
controllers: [__dirname + '/controllers/*.js'],
403423
middlewares: [__dirname + '/middlewares/*.js'],
404424
});

sample/sample1-simple-controller/MessageController.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
import {
2-
OnConnect,
3-
SocketController,
4-
ConnectedSocket,
5-
OnDisconnect,
6-
MessageBody,
7-
OnMessage,
8-
} from '../../src/decorators';
91
import { Message } from './Message';
2+
import { ConnectedSocket, MessageBody, OnConnect, OnDisconnect, OnMessage, SocketController } from '../../src';
103

114
@SocketController()
125
export class MessageController {

sample/sample1-simple-controller/app.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import 'reflect-metadata';
2-
import { createSocketServer } from '../../src/index';
2+
import { SocketControllers } from '../../src/index';
33
import { MessageController } from './MessageController';
4+
import { Container } from 'typedi';
45

5-
createSocketServer(3001, {
6+
new SocketControllers({
7+
port: 3001,
8+
container: Container,
69
controllers: [MessageController],
710
}); // creates socket.io server and registers all controllers there
811

sample/sample2-use-created-socket-io/MessageController.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
import {
2-
OnConnect,
3-
SocketController,
4-
ConnectedSocket,
5-
OnDisconnect,
6-
MessageBody,
7-
OnMessage,
8-
} from '../../src/decorators';
91
import { Message } from './Message';
2+
import { ConnectedSocket, MessageBody, OnConnect, OnDisconnect, OnMessage, SocketController } from '../../src';
103

114
@SocketController()
125
export class MessageController {

sample/sample2-use-created-socket-io/app.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import 'reflect-metadata';
2-
import { useSocketServer } from '../../src/index';
2+
import { SocketControllers } from '../../src/index';
33
import { MessageController } from './MessageController';
4+
import { Server } from 'socket.io';
5+
import { Container } from 'typedi';
46

57
const app = require('express')();
68
const server = require('http').Server(app);
7-
const io = require('socket.io')(server);
9+
const io = new Server(server);
810

911
server.listen(3001);
1012

@@ -16,7 +18,9 @@ io.use((socket: any, next: Function) => {
1618
console.log('Custom middleware');
1719
next();
1820
});
19-
useSocketServer(io, {
21+
new SocketControllers({
22+
io,
23+
container: Container,
2024
controllers: [MessageController],
2125
});
2226

sample/sample3-namespaces/MessageController.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
import {
2-
OnConnect,
3-
SocketController,
4-
ConnectedSocket,
5-
OnDisconnect,
6-
MessageBody,
7-
OnMessage,
8-
} from '../../src/decorators';
91
import { Message } from './Message';
2+
import { ConnectedSocket, MessageBody, OnConnect, OnDisconnect, OnMessage, SocketController } from '../../src';
103

114
@SocketController('/messages')
125
export class MessageController {

sample/sample3-namespaces/app.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import 'reflect-metadata';
2-
import { createSocketServer } from '../../src/index';
2+
import { SocketControllers } from '../../src/index';
33
import { MessageController } from './MessageController';
4+
import { Container } from 'typedi';
45

5-
createSocketServer(3001, {
6+
new SocketControllers({
7+
port: 3001,
8+
container: Container,
69
controllers: [MessageController],
710
}); // creates socket.io server and registers all controllers there
811

sample/sample4-emitters/MessageController.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
import { Message } from './Message';
12
import {
2-
OnConnect,
3-
SocketController,
43
ConnectedSocket,
5-
OnDisconnect,
4+
EmitOnFail,
5+
EmitOnSuccess,
66
MessageBody,
7+
OnConnect,
8+
OnDisconnect,
79
OnMessage,
8-
EmitOnSuccess,
9-
EmitOnFail,
1010
SkipEmitOnEmptyResult,
11-
} from '../../src/decorators';
12-
import { Message } from './Message';
11+
SocketController,
12+
} from '../../src';
1313

1414
@SocketController()
1515
export class MessageController {

sample/sample4-emitters/app.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import 'reflect-metadata';
2-
import { createSocketServer } from '../../src/index';
2+
import { SocketControllers } from '../../src/index';
33
import { MessageController } from './MessageController';
4+
import { Container } from 'typedi';
45

5-
createSocketServer(3001, {
6+
new SocketControllers({
7+
port: 3001,
8+
container: Container,
69
controllers: [MessageController],
710
}); // creates socket.io server and registers all controllers there
811

sample/sample5-middlewares/AuthenticationMiddleware.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { Middleware } from '../../src/decorators';
2-
import { MiddlewareInterface } from '../../src/MiddlewareInterface';
1+
import { Middleware, MiddlewareInterface } from '../../src';
32

43
@Middleware()
54
export class AuthenticationMiddleware implements MiddlewareInterface {

0 commit comments

Comments
 (0)