diff --git a/domains/MatchRoom.js b/domains/MatchRoom.js index 470721cd..5dee053c 100644 --- a/domains/MatchRoom.js +++ b/domains/MatchRoom.js @@ -709,13 +709,13 @@ class MatchRoom extends Room { message = new Uint8Array(message); } message[0] = (message[0] & 0b11111000) | p_idx; // sets player number in header byte of binary message - this.sendToViews(message); + this.sendGameFrameToViews(message); } else if (Array.isArray(message)) { this.sendToViews([message[0], p_idx, ...message.slice(1)]); // TODO: send message to admin page as well? } else { // assume frame - this.sendToViews(['frame', p_idx, message]); + this.sendGameFrameToViews(['frame', p_idx, message]); } }); } diff --git a/domains/Room.js b/domains/Room.js index bc9577d0..0ad3748e 100644 --- a/domains/Room.js +++ b/domains/Room.js @@ -29,6 +29,14 @@ class Room extends EventEmitter { this.views.forEach(connection => connection.send(message)); } + sendGameFrameToViews(message) { + this.views.forEach(connection => { + if (!connection.no_frames) { + connection => connection.send(message); + } + }); + } + close(reason) { this.views.forEach(connection => connection.kick(reason)); this.views.clear(); @@ -36,14 +44,14 @@ class Room extends EventEmitter { handleProducerMessage(user, message) { if (message instanceof Uint8Array) { - this.sendToViews(message); + this.sendGameFrameToViews(message); } else if (Array.isArray(message)) { if (message[0] === 'setVdoNinjaURL') { user.vdo_ninja_url = message[1]; } this.sendToViews([message[0], 0, ...message.slice(1)]); } else { - this.sendToViews(['frame', 0, message]); + this.sendGameFrameToViews(['frame', 0, message]); } } }