fix(server): add support for dynamic namespaces
This fix depends on the "new_namespace" event emitted by the server, which was added in `socket.io@4.1.0`. Related: https://github.com/socketio/socket.io-admin-ui/issues/6
This commit is contained in:
parent
1cf991e49a
commit
74f1c20f6a
|
|
@ -397,6 +397,7 @@ export function instrument(io: Server, opts: Partial<InstrumentOptions>) {
|
||||||
});
|
});
|
||||||
|
|
||||||
io._nsps.forEach((nsp) => registerListeners(adminNamespace, nsp));
|
io._nsps.forEach((nsp) => registerListeners(adminNamespace, nsp));
|
||||||
|
io.on("new_namespace", (nsp) => registerListeners(adminNamespace, nsp));
|
||||||
}
|
}
|
||||||
|
|
||||||
export { InMemoryStore, RedisStore } from "./stores";
|
export { InMemoryStore, RedisStore } from "./stores";
|
||||||
|
|
|
||||||
|
|
@ -964,9 +964,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"engine.io": {
|
"engine.io": {
|
||||||
"version": "5.0.0",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz",
|
||||||
"integrity": "sha512-BATIdDV3H1SrE9/u2BAotvsmjJg0t1P4+vGedImSs1lkFAtQdvk4Ev1y4LDiPF7BPWgXWEG+NDY+nLvW3UrMWw==",
|
"integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"accepts": "~1.3.4",
|
"accepts": "~1.3.4",
|
||||||
|
|
@ -2177,9 +2177,9 @@
|
||||||
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
|
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
|
||||||
},
|
},
|
||||||
"socket.io": {
|
"socket.io": {
|
||||||
"version": "4.0.1",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.2.tgz",
|
||||||
"integrity": "sha512-g8eZB9lV0f4X4gndG0k7YZAywOg1VxYgCUspS4V+sDqsgI/duqd0AW84pKkbGj/wQwxrqrEq+VZrspRfTbHTAQ==",
|
"integrity": "sha512-xK0SD1C7hFrh9+bYoYCdVt+ncixkSLKtNLCax5aEy1o3r5PaO5yQhVb97exIe67cE7lAK+EpyMytXWTWmyZY8w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/cookie": "^0.4.0",
|
"@types/cookie": "^0.4.0",
|
||||||
|
|
@ -2188,15 +2188,15 @@
|
||||||
"accepts": "~1.3.4",
|
"accepts": "~1.3.4",
|
||||||
"base64id": "~2.0.0",
|
"base64id": "~2.0.0",
|
||||||
"debug": "~4.3.1",
|
"debug": "~4.3.1",
|
||||||
"engine.io": "~5.0.0",
|
"engine.io": "~5.1.0",
|
||||||
"socket.io-adapter": "~2.2.0",
|
"socket.io-adapter": "~2.3.0",
|
||||||
"socket.io-parser": "~4.0.3"
|
"socket.io-parser": "~4.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"socket.io-adapter": {
|
"socket.io-adapter": {
|
||||||
"version": "2.2.0",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz",
|
||||||
"integrity": "sha512-rG49L+FwaVEwuAdeBRq49M97YI3ElVabJPzvHT9S6a2CWhDKnjSFasvwAwSYPRhQzfn4NtDIbCaGYgOCOU/rlg==",
|
"integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"socket.io-client": {
|
"socket.io-client": {
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
"nyc": "^15.1.0",
|
"nyc": "^15.1.0",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.2.1",
|
||||||
"redis": "^3.0.2",
|
"redis": "^3.0.2",
|
||||||
"socket.io": "^4.0.1",
|
"socket.io": "^4.1.2",
|
||||||
"socket.io-client": "^4.0.1",
|
"socket.io-client": "^4.0.1",
|
||||||
"socket.io-v3": "npm:socket.io@^3.1.2",
|
"socket.io-v3": "npm:socket.io@^3.1.2",
|
||||||
"ts-node": "^9.1.1",
|
"ts-node": "^9.1.1",
|
||||||
|
|
|
||||||
|
|
@ -336,6 +336,31 @@ describe("Socket.IO Admin (server instrumentation)", () => {
|
||||||
|
|
||||||
adminSocket.disconnect();
|
adminSocket.disconnect();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("supports dynamic namespaces", async function () {
|
||||||
|
// requires `socket.io>=4.1.0` with the "new_namespace" event
|
||||||
|
if (version === "v3") {
|
||||||
|
return this.skip();
|
||||||
|
}
|
||||||
|
instrument(io, {
|
||||||
|
auth: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
io.of(/\/dynamic-\d+/);
|
||||||
|
|
||||||
|
const adminSocket = ioc(`http://localhost:${port}/admin`);
|
||||||
|
await waitFor(adminSocket, "connect");
|
||||||
|
|
||||||
|
const clientSocket = ioc(`http://localhost:${port}/dynamic-101`, {
|
||||||
|
forceNew: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const socket = await waitFor(adminSocket, "socket_connected");
|
||||||
|
|
||||||
|
expect(socket.nsp).to.eql("/dynamic-101");
|
||||||
|
clientSocket.disconnect();
|
||||||
|
adminSocket.disconnect();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue