From 85947d326e84800967e85954820200aa8a2ff958 Mon Sep 17 00:00:00 2001 From: Calvin Montgomery Date: Tue, 19 Jun 2018 21:50:03 -0700 Subject: [PATCH] Fix mismatch between single-emit and broadcast encoding --- src/io/uws.js | 4 ++-- test/io/uws.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/io/uws.js b/src/io/uws.js index 44641042..20503ad1 100644 --- a/src/io/uws.js +++ b/src/io/uws.js @@ -233,8 +233,8 @@ function encode(frame, payload) { function inRoom(room) { return { - emit(frame, ...args) { - const encoded = encode(frame, args); + emit(frame, payload) { + const encoded = encode(frame, payload); for (let wrapper of rooms.get(room)) { wrapper._uwsSocket.send(encoded); diff --git a/test/io/uws.js b/test/io/uws.js index d72d7410..156195c8 100644 --- a/test/io/uws.js +++ b/test/io/uws.js @@ -1,6 +1,7 @@ const { EventEmitter } = require('events'); const assert = require('assert'); const { UWSServer } = require('../../lib/io/uws'); +const inRoom = require('../../lib/io/uws')['in']; const WebSocket = require('uws'); describe('UWSServer', () => { @@ -115,6 +116,19 @@ describe('UWSServer', () => { }); }); + it('broadcasts to a room', done => { + server.on('connection', s => { + s.join('testroom'); + inRoom('testroom').emit('test', { foo: 'bar' }); + }); + + socket = connect(); + socket.test.on('test', data => { + assert.deepStrictEqual(data, { foo: 'bar' }); + done(); + }); + }); + it('responds with an ack frame', done => { server.on('connection', s => { s.on('test', (data, ack) => {