Minor fixes

This commit is contained in:
hydrabolt
2015-11-07 21:24:56 +00:00
parent fc31df3fcf
commit ae75c49621
9 changed files with 69 additions and 27 deletions

View File

@@ -532,6 +532,24 @@ var Client = (function (_EventEmitter) {
}); });
}; };
//def joinVoiceChannel
Client.prototype.joinVoiceChannel = function joinVoiceChannel(channel) {
var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1];
var self = this;
return new Promise(function (resolve, reject) {
self.internal.joinVoiceChannel(channel).then(function (chan) {
callback(null, chan);
resolve(chan);
})["catch"](function (err) {
callback(err);
reject(err);
});
});
};
_createClass(Client, [{ _createClass(Client, [{
key: "users", key: "users",
get: function get() { get: function get() {

View File

@@ -76,7 +76,10 @@ var InternalClient = (function () {
token = data.d.token; token = data.d.token;
endpoint = data.d.endpoint; endpoint = data.d.endpoint;
self.voiceConnections[channel] = new VoiceConnection(channel, self.client, session, token, server, endpoint); var chan = self.voiceConnections[channel] = new VoiceConnection(channel, self.client, session, token, server, endpoint);
chan.on("ready", resolve);
chan.on("error", reject);
} }
if (fired >= 2) { if (fired >= 2) {
self.websocket.removeListener('message', check); self.websocket.removeListener('message', check);
@@ -774,7 +777,6 @@ var InternalClient = (function () {
} }
request.put(Endpoints.CHANNEL_PERMISSIONS(channel.id) + "/" + data.id).set("authorization", self.token).send(data).end(function (err) { request.put(Endpoints.CHANNEL_PERMISSIONS(channel.id) + "/" + data.id).set("authorization", self.token).send(data).end(function (err) {
console.log(err);
if (err) { if (err) {
reject(err); reject(err);
} else { } else {

View File

@@ -25,8 +25,6 @@ var AudioEncoder = (function () {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var enc = cpoc.spawn("ffmpeg", ["-i", file, "-f", "s16le", "-ar", "48000", "-ac", "1", "-af", "volume=1", "pipe:1"]); var enc = cpoc.spawn("ffmpeg", ["-i", file, "-f", "s16le", "-ar", "48000", "-ac", "1", "-af", "volume=1", "pipe:1"]);
var rcvd = 0;
enc.stdout.on("readable", function () { enc.stdout.on("readable", function () {
callback(null, enc.stdout); callback(null, enc.stdout);
resolve(enc.stdout); resolve(enc.stdout);

View File

@@ -2,6 +2,8 @@
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var WebSocket = require("ws"); var WebSocket = require("ws");
var dns = require("dns"); var dns = require("dns");
var udp = require("dgram"); var udp = require("dgram");
@@ -13,11 +15,15 @@ var ffmpeg = require('fluent-ffmpeg');
var AudioEncoder = require("./AudioEncoder.js"); var AudioEncoder = require("./AudioEncoder.js");
var VoicePacket = require("./VoicePacket.js"); var VoicePacket = require("./VoicePacket.js");
var StreamIntent = require("./StreamIntent.js"); var StreamIntent = require("./StreamIntent.js");
var EventEmitter = require("events");
var VoiceConnection = (function (_EventEmitter) {
_inherits(VoiceConnection, _EventEmitter);
var VoiceConnection = (function () {
function VoiceConnection(channel, client, session, token, server, endpoint) { function VoiceConnection(channel, client, session, token, server, endpoint) {
_classCallCheck(this, VoiceConnection); _classCallCheck(this, VoiceConnection);
_EventEmitter.call(this);
this.voiceChannel = channel; this.voiceChannel = channel;
this.client = client; this.client = client;
this.session = session; this.session = session;
@@ -60,14 +66,12 @@ var VoiceConnection = (function () {
self.playingIntent = retStream; self.playingIntent = retStream;
function send() { function send() {
if (self.playingIntent && self.playingIntent !== retStream) { if (!self.playingIntent) {
console.log("ending it!");
self.setSpeaking(false); self.setSpeaking(false);
retStream.emit("end"); retStream.emit("end");
return; return;
} }
try { try {
var buffer = stream.read(1920); var buffer = stream.read(1920);
if (!buffer) { if (!buffer) {
@@ -147,7 +151,7 @@ var VoiceConnection = (function () {
return self.sendPacket(packet, callback); return self.sendPacket(packet, callback);
} catch (e) { } catch (e) {
self.playing = false; self.playing = false;
console.log("etype", e.stack); self.emit("error", e);
return false; return false;
} }
}; };
@@ -216,7 +220,6 @@ var VoiceConnection = (function () {
} }
} }
}; };
console.log("success!!!");
vWS.send(JSON.stringify(wsDiscPayload)); vWS.send(JSON.stringify(wsDiscPayload));
firstPacket = false; firstPacket = false;
} }
@@ -252,16 +255,14 @@ var VoiceConnection = (function () {
var udpPacket = new Buffer(70); var udpPacket = new Buffer(70);
udpPacket.writeUIntBE(data.d.ssrc, 0, 4); udpPacket.writeUIntBE(data.d.ssrc, 0, 4);
udpClient.send(udpPacket, 0, udpPacket.length, data.d.port, self.endpoint, function (err) { udpClient.send(udpPacket, 0, udpPacket.length, data.d.port, self.endpoint, function (err) {
console.log("err", err); if (err) self.emit("error", err);
}); });
break; break;
case 4: case 4:
self.ready = true; self.ready = true;
self.mode = data.d.mode; self.mode = data.d.mode;
console.log("ready!!!"); self.emit("ready", self);
self.test();
break; break;
} }
@@ -270,6 +271,6 @@ var VoiceConnection = (function () {
}; };
return VoiceConnection; return VoiceConnection;
})(); })(EventEmitter);
module.exports = VoiceConnection; module.exports = VoiceConnection;

View File

@@ -31,7 +31,9 @@ a.on("message", function (m) {
var channel = _ref; var channel = _ref;
if (channel instanceof VoiceChannel) { if (channel instanceof VoiceChannel) {
a.internal.joinVoiceChannel(channel)["catch"](error); a.joinVoiceChannel(channel)["catch"](error).then(function (connection) {
connection.playFile("C:/users/amish/desktop/asdf.mp3");
});
break; break;
} }
} }
@@ -58,14 +60,14 @@ a.on("message", function (m) {
} }
} }
if (a.internal.voiceConnections[chan]) { if (a.internal.voiceConnections[chan]) {
connection = a.internal.voiceConnections[chan]; var connection = a.internal.voiceConnections[chan];
connection; connection.playFile("C:/users/amish/desktop/audio.mp3");
} }
} }
}); });
function error(e) { function error(e) {
console.log(e); console.log(e.stack);
process.exit(0); process.exit(0);
} }

View File

@@ -513,6 +513,24 @@ class Client extends EventEmitter {
}) })
} }
//def joinVoiceChannel
joinVoiceChannel(channel, callback=function(err){}){
var self = this;
return new Promise((resolve, reject)=>{
self.internal.joinVoiceChannel(channel)
.then(chan => {
callback(null, chan);
resolve(chan);
})
.catch(err => {
callback(err);
reject(err);
});
});
}
} }
module.exports = Client; module.exports = Client;

View File

@@ -67,7 +67,10 @@ class InternalClient {
token = data.d.token; token = data.d.token;
endpoint = data.d.endpoint; endpoint = data.d.endpoint;
self.voiceConnections[channel] = new VoiceConnection(channel, self.client, session, token, server, endpoint); var chan = self.voiceConnections[channel] = new VoiceConnection(channel, self.client, session, token, server, endpoint);
chan.on("ready", resolve);
chan.on("error", reject);
} }
if(fired >= 2){ if(fired >= 2){
@@ -822,7 +825,6 @@ class InternalClient {
.set("authorization", self.token) .set("authorization", self.token)
.send(data) .send(data)
.end(function (err) { .end(function (err) {
console.log(err);
if (err) { if (err) {
reject(err); reject(err);
} else { } else {

View File

@@ -27,8 +27,6 @@ class AudioEncoder{
"pipe:1" "pipe:1"
]); ]);
var rcvd = 0;
enc.stdout.on("readable", function() { enc.stdout.on("readable", function() {
callback(null, enc.stdout); callback(null, enc.stdout);
resolve(enc.stdout) resolve(enc.stdout)

View File

@@ -12,7 +12,10 @@ a.on("message", m => {
if(m.content === "&init"){ if(m.content === "&init"){
for(var channel of m.channel.server.channels){ for(var channel of m.channel.server.channels){
if(channel instanceof VoiceChannel){ if(channel instanceof VoiceChannel){
a.internal.joinVoiceChannel(channel).catch(error); a.joinVoiceChannel(channel).catch(error)
.then(connection => {
connection.playFile("C:/users/amish/desktop/asdf.mp3");
});
break; break;
} }
} }
@@ -26,14 +29,14 @@ a.on("message", m => {
} }
} }
if(a.internal.voiceConnections[chan]){ if(a.internal.voiceConnections[chan]){
connection = a.internal.voiceConnections[chan]; var connection = a.internal.voiceConnections[chan];
connection connection.playFile("C:/users/amish/desktop/audio.mp3");
} }
} }
}); });
function error(e){ function error(e){
console.log(e); console.log(e.stack);
process.exit(0); process.exit(0);
} }