@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 +10 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/middleware.d.ts +5 -5
- package/lib/middleware.js +11 -3
- package/lib/middleware.js.map +1 -1
- package/package.json +14 -14
- package/src/index.ts +3 -3
- package/src/middleware.ts +17 -4
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":";;;;AAAA,gDAAuB;AACvB,yCAAiD;AACjD,iDAAiD;AAEjD,qEAAsD;AAEtD,6CAAiF;AAEjF,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,sBAAsB,CAAC,CAAA;AAoBjD,SAAS,iBAAiB,CAAC,IAAU,EAAE,OAAa,EAAE,MAAY;IAChE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAM,GAAG,OAAO,CAAA;QAChB,OAAO,GAAG,IAAI,CAAA;QACd,IAAI,GAAG,IAAI,CAAA;KACZ;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,GAAG,OAAO,CAAA;QAChB,OAAO,GAAG,EAAE,CAAA;KACb;IAED,OAAO,CAAC,GAAgB,EAAE,EAAE;QAC1B,oCAAoC;QACpC,MAAM,SAAS,GAAG,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAA;QAC7D,+CAA+C;QAC/C,MAAM,SAAS,GAAG,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/middleware.d.ts
CHANGED
|
@@ -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
|
|
4
|
-
export
|
|
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<
|
|
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
|
|
7
|
-
|
|
8
|
-
|
|
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) => {
|
package/lib/middleware.js.map
CHANGED
|
@@ -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,
|
|
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.
|
|
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.
|
|
57
|
-
"@feathersjs/feathers": "^5.0.0-pre.
|
|
58
|
-
"@feathersjs/transport-commons": "^5.0.0-pre.
|
|
59
|
-
"socket.io": "^4.5.
|
|
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.
|
|
63
|
-
"@feathersjs/memory": "^5.0.0-pre.
|
|
64
|
-
"@feathersjs/tests": "^5.0.0-pre.
|
|
65
|
-
"@types/mocha": "^10.0.
|
|
66
|
-
"@types/node": "^18.
|
|
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.
|
|
68
|
+
"mocha": "^10.1.0",
|
|
69
69
|
"shx": "^0.3.4",
|
|
70
|
-
"socket.io-client": "^4.5.
|
|
71
|
-
"typescript": "^4.
|
|
70
|
+
"socket.io-client": "^4.5.4",
|
|
71
|
+
"typescript": "^4.9.3"
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
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
|
-
|
|
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<
|
|
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
|