Skip to content

Commit 7f20acb

Browse files
Feat: Support registering multiple callback functions for event
1 parent 38755b6 commit 7f20acb

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "playpeerjs",
3-
"version": "1.0.8",
3+
"version": "1.0.9",
44
"description": "WebRTC-based wrapper for creating robust peer-2-peer multiplayer systems with ease.",
55
"type": "module",
66
"main": "dist/playpeer.js",

src/index.js

+12-8
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ export default class PlayPeer {
5858
];
5959

6060
if (!validEvents.includes(event)) return console.warn(WARNING_PREFIX + `Invalid event type "${event}" provided to onEvent.`);
61-
this.#callbacks.set(event, callback);
61+
if (!this.#callbacks.has(event)) this.#callbacks.set(event, []); // If not present, add event array
62+
63+
this.#callbacks.get(event).push(callback); // Push callback into array
6264
}
6365

6466
/**
@@ -68,14 +70,16 @@ export default class PlayPeer {
6870
* @private
6971
*/
7072
#triggerEvent(event, ...args) {
71-
const callback = this.#callbacks.get(event);
72-
if (!callback) return;
73+
const callbacks = this.#callbacks.get(event);
74+
if (!callbacks || callbacks.length === 0) return;
7375

74-
try {
75-
callback(...args);
76-
} catch (error) {
77-
console.error(ERROR_PREFIX + `${event} callback error:`, error);
78-
}
76+
callbacks.forEach((callback) => {
77+
try {
78+
callback(...args);
79+
} catch (error) {
80+
console.error(ERROR_PREFIX + `${event} callback error:`, error);
81+
}
82+
});
7983
}
8084

8185
/**

0 commit comments

Comments
 (0)