@feathersjs/socketio 5.0.0-pre.32 → 5.0.0-pre.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.0.0-pre.34](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.33...v5.0.0-pre.34) (2022-12-14)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **socketio:** Disconnect socket on app disconnect event ([#2896](https://github.com/feathersjs/feathers/issues/2896)) ([4ba0039](https://github.com/feathersjs/feathers/commit/4ba003907843cfc2655798a568b16f07ff8adb1b))
11
+
12
+ # [5.0.0-pre.33](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.32...v5.0.0-pre.33) (2022-11-08)
13
+
14
+ **Note:** Version bump only for package @feathersjs/socketio
15
+
6
16
  # [5.0.0-pre.32](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.31...v5.0.0-pre.32) (2022-10-26)
7
17
 
8
18
  ### Bug Fixes
package/lib/index.js CHANGED
@@ -41,7 +41,7 @@ function configureSocketio(port, options, config) {
41
41
  async setup(server, ...rest) {
42
42
  if (!this.io) {
43
43
  const io = (this.io = new socket_io_1.Server(port || server, options));
44
- io.use((0, middleware_1.disconnect)(app, getParams));
44
+ io.use((0, middleware_1.disconnect)(app, getParams, socketMap));
45
45
  io.use((0, middleware_1.params)(app, socketMap));
46
46
  io.use((0, middleware_1.authentication)(app, getParams));
47
47
  // In Feathers it is easy to hit the standard Node warning limit
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { Application, Params } from '@feathersjs/feathers';
1
+ import { Application, Params, RealTimeConnection } from '@feathersjs/feathers';
2
2
  import { Socket } from 'socket.io';
3
- export declare type ParamsGetter = (socket: Socket) => any;
4
- export declare type NextFunction = (err?: any) => void;
3
+ export type ParamsGetter = (socket: Socket) => any;
4
+ export type NextFunction = (err?: any) => void;
5
5
  export interface FeathersSocket extends Socket {
6
6
  feathers?: Params & {
7
7
  [key: string]: any;
8
8
  };
9
9
  }
10
- export declare const disconnect: (app: Application, getParams: ParamsGetter) => (socket: FeathersSocket, next: NextFunction) => void;
11
- export declare const params: (_app: Application, socketMap: WeakMap<any, any>) => (socket: FeathersSocket, next: NextFunction) => void;
10
+ export declare const disconnect: (app: Application, getParams: ParamsGetter, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) => (socket: FeathersSocket, next: NextFunction) => void;
11
+ export declare const params: (_app: Application, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) => (socket: FeathersSocket, next: NextFunction) => void;
12
12
  export declare const authentication: (app: Application, getParams: ParamsGetter, settings?: any) => (socket: FeathersSocket, next: NextFunction) => void;
package/lib/middleware.js CHANGED
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.authentication = exports.params = exports.disconnect = void 0;
4
4
  const commons_1 = require("@feathersjs/commons");
5
5
  const debug = (0, commons_1.createDebug)('@feathersjs/socketio/middleware');
6
- const disconnect = (app, getParams) => (socket, next) => {
7
- socket.on('disconnect', () => app.emit('disconnect', getParams(socket)));
8
- next();
6
+ const disconnect = (app, getParams, socketMap) => {
7
+ app.on('disconnect', (connection) => {
8
+ const socket = socketMap.get(connection);
9
+ if (socket && socket.connected) {
10
+ socket.disconnect();
11
+ }
12
+ });
13
+ return (socket, next) => {
14
+ socket.on('disconnect', () => app.emit('disconnect', getParams(socket)));
15
+ next();
16
+ };
9
17
  };
10
18
  exports.disconnect = disconnect;
11
19
  const params = (_app, socketMap) => (socket, next) => {
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;AACA,iDAAiD;AAGjD,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,iCAAiC,CAAC,CAAA;AAQrD,MAAM,UAAU,GACrB,CAAC,GAAgB,EAAE,SAAuB,EAAE,EAAE,CAAC,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAC5F,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACxE,IAAI,EAAE,CAAA;AACR,CAAC,CAAA;AAJU,QAAA,UAAU,cAIpB;AAEI,MAAM,MAAM,GACjB,CAAC,IAAiB,EAAE,SAA4B,EAAE,EAAE,CAAC,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAClG,MAAM,CAAC,QAAQ,GAAG;QAChB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;KAClC,CAAA;IAED,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAEtC,IAAI,EAAE,CAAA;AACR,CAAC,CAAA;AAVU,QAAA,MAAM,UAUhB;AAEI,MAAM,cAAc,GACzB,CAAC,GAAgB,EAAE,SAAuB,EAAE,WAAgB,EAAE,EAAE,EAAE,CAClE,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAI,GAAW,CAAC,qBAAqB;QAChD,CAAC,CAAE,GAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,CAAC,CAAC,IAAI,CAAA;IAER,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,OAAO,IAAI,EAAE,CAAA;KACd;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAA;IACpC,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,cAAc,IAAI,EAAE,CAAA;IAE5E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,IAAI,EAAE,CAAA;KACd;IAED,OAAO;SACJ,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;SAChD,IAAI,CAAC,KAAK,EAAE,cAAmB,EAAE,EAAE;QAClC,IAAI,cAAc,EAAE;YAClB,KAAK,CAAC,wCAAwC,EAAE,cAAc,CAAC,CAAA;YAC/D,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAA;YAC/C,MAAM,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gBACnC,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC;aAC9B,CAAC,CAAA;SACH;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC;SACD,KAAK,CAAC,IAAI,CAAC,CAAA;AAChB,CAAC,CAAA;AAjCU,QAAA,cAAc,kBAiCxB"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;AACA,iDAAiD;AAGjD,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,iCAAiC,CAAC,CAAA;AAQrD,MAAM,UAAU,GAAG,CACxB,GAAgB,EAChB,SAAuB,EACvB,SAAsD,EACtD,EAAE;IACF,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAA8B,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACxC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE;YAC9B,MAAM,CAAC,UAAU,EAAE,CAAA;SACpB;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;QACpD,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxE,IAAI,EAAE,CAAA;IACR,CAAC,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,UAAU,cAgBtB;AAEM,MAAM,MAAM,GACjB,CAAC,IAAiB,EAAE,SAAsD,EAAE,EAAE,CAC9E,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAC7C,MAAM,CAAC,QAAQ,GAAG;QAChB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;KAClC,CAAA;IAED,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAEtC,IAAI,EAAE,CAAA;AACR,CAAC,CAAA;AAXU,QAAA,MAAM,UAWhB;AAEI,MAAM,cAAc,GACzB,CAAC,GAAgB,EAAE,SAAuB,EAAE,WAAgB,EAAE,EAAE,EAAE,CAClE,CAAC,MAAsB,EAAE,IAAkB,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAI,GAAW,CAAC,qBAAqB;QAChD,CAAC,CAAE,GAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,CAAC,CAAC,IAAI,CAAA;IAER,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,OAAO,IAAI,EAAE,CAAA;KACd;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAA;IACpC,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,cAAc,IAAI,EAAE,CAAA;IAE5E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,IAAI,EAAE,CAAA;KACd;IAED,OAAO;SACJ,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;SAChD,IAAI,CAAC,KAAK,EAAE,cAAmB,EAAE,EAAE;QAClC,IAAI,cAAc,EAAE;YAClB,KAAK,CAAC,wCAAwC,EAAE,cAAc,CAAC,CAAA;YAC/D,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAA;YAC/C,MAAM,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gBACnC,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC;aAC9B,CAAC,CAAA;SACH;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC;SACD,KAAK,CAAC,IAAI,CAAC,CAAA;AAChB,CAAC,CAAA;AAjCU,QAAA,cAAc,kBAiCxB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@feathersjs/socketio",
3
3
  "description": "The Feathers Socket.io real-time API provider",
4
- "version": "5.0.0-pre.32",
4
+ "version": "5.0.0-pre.34",
5
5
  "homepage": "https://feathersjs.com",
6
6
  "main": "lib/",
7
7
  "types": "lib/",
@@ -53,22 +53,22 @@
53
53
  "access": "public"
54
54
  },
55
55
  "dependencies": {
56
- "@feathersjs/commons": "^5.0.0-pre.32",
57
- "@feathersjs/feathers": "^5.0.0-pre.32",
58
- "@feathersjs/transport-commons": "^5.0.0-pre.32",
59
- "socket.io": "^4.5.2"
56
+ "@feathersjs/commons": "^5.0.0-pre.34",
57
+ "@feathersjs/feathers": "^5.0.0-pre.34",
58
+ "@feathersjs/transport-commons": "^5.0.0-pre.34",
59
+ "socket.io": "^4.5.4"
60
60
  },
61
61
  "devDependencies": {
62
- "@feathersjs/express": "^5.0.0-pre.32",
63
- "@feathersjs/memory": "^5.0.0-pre.32",
64
- "@feathersjs/tests": "^5.0.0-pre.32",
65
- "@types/mocha": "^10.0.0",
66
- "@types/node": "^18.8.2",
62
+ "@feathersjs/express": "^5.0.0-pre.34",
63
+ "@feathersjs/memory": "^5.0.0-pre.34",
64
+ "@feathersjs/tests": "^5.0.0-pre.34",
65
+ "@types/mocha": "^10.0.1",
66
+ "@types/node": "^18.11.10",
67
67
  "lodash": "^4.17.21",
68
- "mocha": "^10.0.0",
68
+ "mocha": "^10.1.0",
69
69
  "shx": "^0.3.4",
70
- "socket.io-client": "^4.5.2",
71
- "typescript": "^4.8.4"
70
+ "socket.io-client": "^4.5.4",
71
+ "typescript": "^4.9.3"
72
72
  },
73
- "gitHead": "b405e205fc6d9fbd42b42c7a3f30ea4bf33d121d"
73
+ "gitHead": "42cca600d00f0b3b9d89fa79be30fcd46bc50132"
74
74
  }
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'http'
2
2
  import { Server, ServerOptions } from 'socket.io'
3
3
  import { createDebug } from '@feathersjs/commons'
4
- import { Application } from '@feathersjs/feathers'
4
+ import { Application, RealTimeConnection } from '@feathersjs/feathers'
5
5
  import { socket } from '@feathersjs/transport-commons'
6
6
 
7
7
  import { disconnect, params, authentication, FeathersSocket } from './middleware'
@@ -42,7 +42,7 @@ function configureSocketio(port?: any, options?: any, config?: any) {
42
42
  // Function that gets the connection
43
43
  const getParams = (socket: FeathersSocket) => socket.feathers
44
44
  // A mapping from connection to socket instance
45
- const socketMap = new WeakMap()
45
+ const socketMap = new WeakMap<RealTimeConnection, FeathersSocket>()
46
46
  // Promise that resolves with the Socket.io `io` instance
47
47
  // when `setup` has been called (with a server)
48
48
  const done = new Promise((resolve) => {
@@ -67,7 +67,7 @@ function configureSocketio(port?: any, options?: any, config?: any) {
67
67
  if (!this.io) {
68
68
  const io = (this.io = new Server(port || server, options))
69
69
 
70
- io.use(disconnect(app, getParams))
70
+ io.use(disconnect(app, getParams, socketMap))
71
71
  io.use(params(app, socketMap))
72
72
  io.use(authentication(app, getParams))
73
73
 
package/src/middleware.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Application, Params } from '@feathersjs/feathers'
1
+ import { Application, Params, RealTimeConnection } from '@feathersjs/feathers'
2
2
  import { createDebug } from '@feathersjs/commons'
3
3
  import { Socket } from 'socket.io'
4
4
 
@@ -10,14 +10,27 @@ export interface FeathersSocket extends Socket {
10
10
  feathers?: Params & { [key: string]: any }
11
11
  }
12
12
 
13
- export const disconnect =
14
- (app: Application, getParams: ParamsGetter) => (socket: FeathersSocket, next: NextFunction) => {
13
+ export const disconnect = (
14
+ app: Application,
15
+ getParams: ParamsGetter,
16
+ socketMap: WeakMap<RealTimeConnection, FeathersSocket>
17
+ ) => {
18
+ app.on('disconnect', (connection: RealTimeConnection) => {
19
+ const socket = socketMap.get(connection)
20
+ if (socket && socket.connected) {
21
+ socket.disconnect()
22
+ }
23
+ })
24
+
25
+ return (socket: FeathersSocket, next: NextFunction) => {
15
26
  socket.on('disconnect', () => app.emit('disconnect', getParams(socket)))
16
27
  next()
17
28
  }
29
+ }
18
30
 
19
31
  export const params =
20
- (_app: Application, socketMap: WeakMap<any, any>) => (socket: FeathersSocket, next: NextFunction) => {
32
+ (_app: Application, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) =>
33
+ (socket: FeathersSocket, next: NextFunction) => {
21
34
  socket.feathers = {
22
35
  provider: 'socketio',
23
36
  headers: socket.handshake.headers