From e2726f5a9a4b65621f7265dd027aef904763b2ac Mon Sep 17 00:00:00 2001 From: Amish Shah Date: Thu, 16 Aug 2018 18:30:54 +0100 Subject: [PATCH] voice: remove createReceiver, just use VoiceConnection.receiver --- src/client/voice/VoiceConnection.js | 28 ++++++------------- src/client/voice/networking/VoiceWebSocket.js | 10 +++---- test/voice.js | 3 +- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/src/client/voice/VoiceConnection.js b/src/client/voice/VoiceConnection.js index 3f48c9315..6682d32ff 100644 --- a/src/client/voice/VoiceConnection.js +++ b/src/client/voice/VoiceConnection.js @@ -54,12 +54,6 @@ class VoiceConnection extends EventEmitter { */ this.speaking = false; - /** - * An array of Voice Receivers that have been created for this connection - * @type {VoiceReceiver[]} - */ - this.receivers = []; - /** * The authentication data needed to connect to the voice server * @type {Object} @@ -114,6 +108,12 @@ class VoiceConnection extends EventEmitter { */ this.sockets = {}; + /** + * The voice receiver of this connection + * @type {VoiceReceiver} + */ + this.receiver = null; + this.authenticate(); } @@ -417,6 +417,7 @@ class VoiceConnection extends EventEmitter { Object.assign(this.authentication, data); this.status = VoiceStatus.CONNECTED; clearTimeout(this.connectTimeout); + this.receiver = new VoiceReceiver(this); /** * Emitted once the connection is ready, when a promise to join a voice channel resolves, * the connection will already be ready. @@ -446,9 +447,7 @@ class VoiceConnection extends EventEmitter { if (this.status === VoiceStatus.CONNECTED) { this.emit('speaking', user, speaking); if (!speaking) { - for (const receiver of this.receivers) { - receiver.packets._stoppedSpeaking(user_id); - } + this.receiver.packets._stoppedSpeaking(user_id); } } @@ -466,17 +465,6 @@ class VoiceConnection extends EventEmitter { } } - /** - * Creates a VoiceReceiver so you can start listening to voice data. - * It's recommended to only create one of these. - * @returns {VoiceReceiver} - */ - createReceiver() { - const receiver = new VoiceReceiver(this); - this.receivers.push(receiver); - return receiver; - } - play() {} // eslint-disable-line no-empty-function } diff --git a/src/client/voice/networking/VoiceWebSocket.js b/src/client/voice/networking/VoiceWebSocket.js index 4f3448ef6..5e0608ced 100644 --- a/src/client/voice/networking/VoiceWebSocket.js +++ b/src/client/voice/networking/VoiceWebSocket.js @@ -180,12 +180,10 @@ class VoiceWebSocket extends EventEmitter { this.connection.ssrcMap.set(+packet.d.audio_ssrc, packet.d.user_id); break; case VoiceOPCodes.CLIENT_DISCONNECT: - for (const receiver of this.connection.receivers) { - const streamInfo = receiver.packets.streams.get(packet.d.user_id); - if (streamInfo) { - receiver.packets.streams.delete(packet.d.user_id); - streamInfo.stream.push(null); - } + const streamInfo = this.connection.receiver.packets.streams.get(packet.d.user_id); + if (streamInfo) { + this.connection.receiver.packets.streams.delete(packet.d.user_id); + streamInfo.stream.push(null); } break; case VoiceOPCodes.SPEAKING: diff --git a/test/voice.js b/test/voice.js index b4eac0128..70b5c30f7 100644 --- a/test/voice.js +++ b/test/voice.js @@ -41,8 +41,7 @@ client.on('message', m => { const channel = m.guild.channels.get(m.content.split(' ')[1]) || m.member.voice.channel; if (channel && channel.type === 'voice') { channel.join().then(conn => { - const receiver = conn.createReceiver(); - receiver.createStream(m.author, true).on('data', b => console.log(b.toString())); + conn.receiver.createStream(m.author, true).on('data', b => console.log(b.toString())); conn.player.on('error', (...e) => console.log('player', ...e)); if (!connections.has(m.guild.id)) connections.set(m.guild.id, { conn, queue: [] }); m.reply('ok!');