diff --git a/packages/transport-commons/src/socket/utils.ts b/packages/transport-commons/src/socket/utils.ts index 2a01dff35b..1e9ec19b5d 100644 --- a/packages/transport-commons/src/socket/utils.ts +++ b/packages/transport-commons/src/socket/utils.ts @@ -51,7 +51,7 @@ export function getDispatcher (emit: string, socketMap: WeakMap isEqual(resultData, data)); + result = result.find(resultData => isEqual(resultData, data)); } debug(`Dispatching '${eventName}' to Socket ${socket.id} with`, result); diff --git a/packages/transport-commons/test/socket/utils.test.ts b/packages/transport-commons/test/socket/utils.test.ts index 352294ff37..8e3cf7bbf2 100644 --- a/packages/transport-commons/test/socket/utils.test.ts +++ b/packages/transport-commons/test/socket/utils.test.ts @@ -165,6 +165,25 @@ describe('socket commons utils', () => { dispatcher('testing', dummyChannel, dummyHook, data2); }); + it('dispatches dispatch arrays properly', done => { + const data1 = { message: 'First message' }; + const data2 = { message: 'Second message' }; + + dummyHook.result = [] + dummyHook.dispatch = [ data1, data2 ]; + + dummySocket.once('testing', data => { + assert.deepStrictEqual(data, data1); + dummySocket.once('testing', result => { + assert.deepStrictEqual(result, data2); + done(); + }); + }); + + dispatcher('testing', dummyChannel, dummyHook, data1); + dispatcher('testing', dummyChannel, dummyHook, data2); + }); + it('dispatches arrays properly for custom events', done => { const result = [ { message: 'First' },