@feathersjs/socketio
Advanced tools
Comparing version 5.0.0-pre.33 to 5.0.0-pre.34
@@ -6,2 +6,8 @@ # Change Log | ||
# [5.0.0-pre.34](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.33...v5.0.0-pre.34) (2022-12-14) | ||
### Bug Fixes | ||
- **socketio:** Disconnect socket on app disconnect event ([#2896](https://github.com/feathersjs/feathers/issues/2896)) ([4ba0039](https://github.com/feathersjs/feathers/commit/4ba003907843cfc2655798a568b16f07ff8adb1b)) | ||
# [5.0.0-pre.33](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.32...v5.0.0-pre.33) (2022-11-08) | ||
@@ -8,0 +14,0 @@ |
@@ -44,3 +44,3 @@ "use strict"; | ||
const io = (this.io = new socket_io_1.Server(port || server, options)); | ||
io.use((0, middleware_1.disconnect)(app, getParams)); | ||
io.use((0, middleware_1.disconnect)(app, getParams, socketMap)); | ||
io.use((0, middleware_1.params)(app, socketMap)); | ||
@@ -47,0 +47,0 @@ io.use((0, middleware_1.authentication)(app, getParams)); |
@@ -1,5 +0,5 @@ | ||
import { Application, Params } from '@feathersjs/feathers'; | ||
import { Application, Params, RealTimeConnection } from '@feathersjs/feathers'; | ||
import { Socket } from 'socket.io'; | ||
export declare type ParamsGetter = (socket: Socket) => any; | ||
export declare type NextFunction = (err?: any) => void; | ||
export type ParamsGetter = (socket: Socket) => any; | ||
export type NextFunction = (err?: any) => void; | ||
export interface FeathersSocket extends Socket { | ||
@@ -10,4 +10,4 @@ feathers?: Params & { | ||
} | ||
export declare const disconnect: (app: Application, getParams: ParamsGetter) => (socket: FeathersSocket, next: NextFunction) => void; | ||
export declare const params: (_app: Application, socketMap: WeakMap<any, any>) => (socket: FeathersSocket, next: NextFunction) => void; | ||
export declare const disconnect: (app: Application, getParams: ParamsGetter, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) => (socket: FeathersSocket, next: NextFunction) => void; | ||
export declare const params: (_app: Application, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) => (socket: FeathersSocket, next: NextFunction) => void; | ||
export declare const authentication: (app: Application, getParams: ParamsGetter, settings?: any) => (socket: FeathersSocket, next: NextFunction) => void; |
@@ -6,5 +6,13 @@ "use strict"; | ||
const debug = (0, commons_1.createDebug)('@feathersjs/socketio/middleware'); | ||
const disconnect = (app, getParams) => (socket, next) => { | ||
socket.on('disconnect', () => app.emit('disconnect', getParams(socket))); | ||
next(); | ||
const disconnect = (app, getParams, socketMap) => { | ||
app.on('disconnect', (connection) => { | ||
const socket = socketMap.get(connection); | ||
if (socket && socket.connected) { | ||
socket.disconnect(); | ||
} | ||
}); | ||
return (socket, next) => { | ||
socket.on('disconnect', () => app.emit('disconnect', getParams(socket))); | ||
next(); | ||
}; | ||
}; | ||
@@ -11,0 +19,0 @@ exports.disconnect = disconnect; |
{ | ||
"name": "@feathersjs/socketio", | ||
"description": "The Feathers Socket.io real-time API provider", | ||
"version": "5.0.0-pre.33", | ||
"version": "5.0.0-pre.34", | ||
"homepage": "https://feathersjs.com", | ||
@@ -56,20 +56,20 @@ "main": "lib/", | ||
"dependencies": { | ||
"@feathersjs/commons": "^5.0.0-pre.33", | ||
"@feathersjs/feathers": "^5.0.0-pre.33", | ||
"@feathersjs/transport-commons": "^5.0.0-pre.33", | ||
"socket.io": "^4.5.3" | ||
"@feathersjs/commons": "^5.0.0-pre.34", | ||
"@feathersjs/feathers": "^5.0.0-pre.34", | ||
"@feathersjs/transport-commons": "^5.0.0-pre.34", | ||
"socket.io": "^4.5.4" | ||
}, | ||
"devDependencies": { | ||
"@feathersjs/express": "^5.0.0-pre.33", | ||
"@feathersjs/memory": "^5.0.0-pre.33", | ||
"@feathersjs/tests": "^5.0.0-pre.33", | ||
"@types/mocha": "^10.0.0", | ||
"@types/node": "^18.11.9", | ||
"@feathersjs/express": "^5.0.0-pre.34", | ||
"@feathersjs/memory": "^5.0.0-pre.34", | ||
"@feathersjs/tests": "^5.0.0-pre.34", | ||
"@types/mocha": "^10.0.1", | ||
"@types/node": "^18.11.10", | ||
"lodash": "^4.17.21", | ||
"mocha": "^10.1.0", | ||
"shx": "^0.3.4", | ||
"socket.io-client": "^4.5.3", | ||
"typescript": "^4.8.4" | ||
"socket.io-client": "^4.5.4", | ||
"typescript": "^4.9.3" | ||
}, | ||
"gitHead": "89f516bcb1457e23a02c6212e9cd8bacc4d267d4" | ||
"gitHead": "42cca600d00f0b3b9d89fa79be30fcd46bc50132" | ||
} |
import http from 'http' | ||
import { Server, ServerOptions } from 'socket.io' | ||
import { createDebug } from '@feathersjs/commons' | ||
import { Application } from '@feathersjs/feathers' | ||
import { Application, RealTimeConnection } from '@feathersjs/feathers' | ||
import { socket } from '@feathersjs/transport-commons' | ||
@@ -45,3 +45,3 @@ | ||
// A mapping from connection to socket instance | ||
const socketMap = new WeakMap() | ||
const socketMap = new WeakMap<RealTimeConnection, FeathersSocket>() | ||
// Promise that resolves with the Socket.io `io` instance | ||
@@ -71,3 +71,3 @@ // when `setup` has been called (with a server) | ||
io.use(disconnect(app, getParams)) | ||
io.use(disconnect(app, getParams, socketMap)) | ||
io.use(params(app, socketMap)) | ||
@@ -74,0 +74,0 @@ io.use(authentication(app, getParams)) |
@@ -1,2 +0,2 @@ | ||
import { Application, Params } from '@feathersjs/feathers' | ||
import { Application, Params, RealTimeConnection } from '@feathersjs/feathers' | ||
import { createDebug } from '@feathersjs/commons' | ||
@@ -13,10 +13,23 @@ import { Socket } from 'socket.io' | ||
export const disconnect = | ||
(app: Application, getParams: ParamsGetter) => (socket: FeathersSocket, next: NextFunction) => { | ||
export const disconnect = ( | ||
app: Application, | ||
getParams: ParamsGetter, | ||
socketMap: WeakMap<RealTimeConnection, FeathersSocket> | ||
) => { | ||
app.on('disconnect', (connection: RealTimeConnection) => { | ||
const socket = socketMap.get(connection) | ||
if (socket && socket.connected) { | ||
socket.disconnect() | ||
} | ||
}) | ||
return (socket: FeathersSocket, next: NextFunction) => { | ||
socket.on('disconnect', () => app.emit('disconnect', getParams(socket))) | ||
next() | ||
} | ||
} | ||
export const params = | ||
(_app: Application, socketMap: WeakMap<any, any>) => (socket: FeathersSocket, next: NextFunction) => { | ||
(_app: Application, socketMap: WeakMap<RealTimeConnection, FeathersSocket>) => | ||
(socket: FeathersSocket, next: NextFunction) => { | ||
socket.feathers = { | ||
@@ -23,0 +36,0 @@ provider: 'socketio', |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
59029
299