Skip to content

Commit 3c08727

Browse files
committed
improved docs
1 parent f8532e1 commit 3c08727

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

README.md

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,11 @@ Use class-based controllers to handle websocket events. Helps to organize your c
6262
import "es6-shim"; // this shim is optional if you are using old version of node
6363
import "reflect-metadata"; // this shim is required
6464
import {createSocketServer} from "socket-controllers";
65-
import "./MessageController"; // we need to "load" our controller before call createSocketServer. this is required
65+
import {MessageController} from "./MessageController";
6666
67-
createSocketServer(3001);
67+
createSocketServer(3001, {
68+
controllers: [MessageController]
69+
});
6870
```
6971
7072
3. Now you can send `save` websocket message using websocket-client.
@@ -310,7 +312,7 @@ You can load all controllers in once from specific directories, by specifying ar
310312

311313
```typescript
312314
import "reflect-metadata"; // this shim is required
313-
import {createSocketServer, loadControllers} from "socket-controllers";
315+
import {createSocketServer} from "socket-controllers";
314316

315317
createSocketServer(3000, {
316318
controllers: [__dirname + "/controllers/*.js"]
@@ -328,6 +330,15 @@ export class MessageController {
328330
}
329331
```
330332

333+
Also you can use dynamic namespace, like `express router` patterns:
334+
335+
```typescript
336+
@SocketController("/messages/:userId")
337+
export class MessageController {
338+
// ...
339+
}
340+
```
341+
331342
## Using middlewares
332343

333344
Middlewares are the functions passed to the `socketIo.use` method.
@@ -350,24 +361,27 @@ export class CompressionMiddleware implements MiddlewareInterface {
350361

351362
## Don't forget to load your controllers and middlewares
352363

353-
Controllers and middlewares should be loaded globally, before app bootstrap:
364+
Controllers and middlewares should be loaded:
354365

355366
```typescript
356367
import "reflect-metadata";
357368
import {createSocketServer} from "socket-controllers";
358-
import "./MessageController";
359-
import "./MyMiddleware"; // here we load it
360-
let io = createSocketServer(3000);
369+
import {MessageController} from "./MessageController";
370+
import {MyMiddleware} from "./MyMiddleware"; // here we import it
371+
let io = createSocketServer(3000, {
372+
controllers: [MessageController],
373+
middlewares: [MyMiddleware]
374+
});
361375
```
362376

363377
Also you can load them from directories. Also you can use glob patterns:
364378

365379
```typescript
366380
import "reflect-metadata";
367-
import {createSocketServer, loadControllers} from "socket-controllers";
381+
import {createSocketServer} from "socket-controllers";
368382
let io = createSocketServer(3000, {
369383
controllers: [__dirname + "/controllers/**/*.js"],
370-
middlewareDirs: [__dirname + "/middlewares/**/*.js"]
384+
middlewares: [__dirname + "/middlewares/**/*.js"]
371385
});
372386
```
373387

@@ -389,7 +403,7 @@ useContainer(Container);
389403
// create and run socket server
390404
let io = createSocketServer(3000, {
391405
controllers: [__dirname + "/controllers/*.js"],
392-
middlewareDirs: [__dirname + "/middlewares/*.js"]
406+
middlewares: [__dirname + "/middlewares/*.js"]
393407
});
394408
```
395409

@@ -411,7 +425,7 @@ export class MessageController {
411425

412426
| Signature | Description |
413427
|-----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
414-
| `@SocketController(namespace?: string)` | Registers a class to be a socket controller that can listen to websocket events and respond to them. |
428+
| `@SocketController(namespace?: string|Regex)` | Registers a class to be a socket controller that can listen to websocket events and respond to them. |
415429
| `@OnMessage(messageName: string)` | Registers controller's action to be executed when socket receives message with given name. |
416430
| `@OnConnect()` | Registers controller's action to be executed when client connects to the socket. |
417431
| `@OnDisconnect()` | Registers controller's action to be executed when client disconnects from the socket. |
@@ -421,7 +435,7 @@ export class MessageController {
421435
| `@SocketQueryParam(paramName: string)` | Injects query parameter from the received socket request. |
422436
| `@SocketId()` | Injects socket id from the received request. |
423437
| `@SocketRequest()` | Injects request object received by socket. |
424-
| `@SocketRooms()` | Injects rooms of the connected socket client. |
438+
| `@SocketRooms()` | Injects rooms of the connected socket client. | | `@NspParams()` | Injects dynamic namespace params. | | `@NspParam(paramName: string)` | Injects param from the dynamic namespace. |
425439
| `@Middleware()` | Registers a new middleware to be registered in the socket.io. |
426440
| `@EmitOnSuccess(messageName: string)` | If this decorator is set then after controller action will emit message with the given name after action execution. It will emit message only if controller succeed without errors. If result is a Promise then it will wait until promise is resolved and emit a message. |
427441
| `@EmitOnFail(messageName: string)` | If this decorator is set then after controller action will emit message with the given name after action execution. It will emit message only if controller throw an exception. If result is a Promise then it will wait until promise throw an error and emit a message. |

0 commit comments

Comments
 (0)