diff --git a/lib/index.ts b/lib/index.ts index fa835f3..15427dc 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -346,7 +346,7 @@ export class RedisAdapter extends Adapter { if (!onlyLocal) { const rawOpts = { rooms: [...opts.rooms], - except: [...opts.except], + except: [...new Set(opts.except)], flags: opts.flags, }; const msg = msgpack.encode([this.uid, packet, rawOpts]); diff --git a/test/index.js b/test/index.js index c6ad968..26222c4 100644 --- a/test/index.js +++ b/test/index.js @@ -65,6 +65,26 @@ let socket1, socket2, socket3; }); }); + it("uses a namespace to broadcast to rooms", () => { + socket1.join("woot"); + client2.emit("do broadcast"); + socket2.on("do broadcast", () => { + namespace2.to("woot").emit("broadcast"); + }); + + client1.on("broadcast", () => { + setTimeout(done, 100); + }); + + client2.on("broadcast", () => { + throw new Error("Not in room"); + }); + + client3.on("broadcast", () => { + throw new Error("Not in room"); + }); + }); + it("broadcasts to multiple rooms at a time", (done) => { function test() { client2.emit("do broadcast");