106 lines
2.4 KiB
JavaScript
106 lines
2.4 KiB
JavaScript
|
/*BDSocket*/
|
||
|
|
||
|
var bdSocket;
|
||
|
var bdws;
|
||
|
|
||
|
function BdWSocket() {
|
||
|
bdws = this;
|
||
|
}
|
||
|
|
||
|
BdWSocket.prototype.start = function () {
|
||
|
var self = this;
|
||
|
/* $.ajax({
|
||
|
method: "GET",
|
||
|
url: "https://discordapp.com/api/gateway",
|
||
|
headers: {
|
||
|
authorization: localStorage.token.match(/\"(.+)\"/)[1]
|
||
|
},
|
||
|
success: function (data) {
|
||
|
self.open(data.url);
|
||
|
}
|
||
|
});*/
|
||
|
};
|
||
|
|
||
|
BdWSocket.prototype.open = function (host) {
|
||
|
utils.log("Socket Host: " + host);
|
||
|
try {
|
||
|
bdSocket = new WebSocket(host);
|
||
|
bdSocket.onopen = this.onOpen;
|
||
|
bdSocket.onmessage = this.onMessage;
|
||
|
bdSocket.onerror = this.onError;
|
||
|
bdSocket.onclose = this.onClose;
|
||
|
} catch (err) {
|
||
|
utils.log(err);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
BdWSocket.prototype.onOpen = function () {
|
||
|
utils.log("Socket Open");
|
||
|
var data = {
|
||
|
op: 2,
|
||
|
d: {
|
||
|
token: JSON.parse(localStorage.getItem('token')),
|
||
|
properties: JSON.parse(localStorage.getItem('superProperties')),
|
||
|
v: 3
|
||
|
}
|
||
|
};
|
||
|
bdws.send(data);
|
||
|
};
|
||
|
|
||
|
BdWSocket.prototype.onMessage = function (e) {
|
||
|
|
||
|
var packet, data, type;
|
||
|
try {
|
||
|
packet = JSON.parse(e.data);
|
||
|
data = packet.d;
|
||
|
type = packet.t;
|
||
|
} catch (err) {
|
||
|
utils.err(err);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
switch (type) {
|
||
|
case "READY":
|
||
|
bdSocket.interval = setInterval(function(){bdws.send({
|
||
|
op: 1,
|
||
|
d: Date.now()
|
||
|
});}, data.heartbeat_interval);
|
||
|
utils.log("Socket Ready");
|
||
|
break;
|
||
|
case "PRESENCE_UPDATE":
|
||
|
pluginModule.socketEvent("PRESENCE_UPDATE", data);
|
||
|
break;
|
||
|
case "TYPING_START":
|
||
|
pluginModule.socketEvent("TYPING_START", data);
|
||
|
break;
|
||
|
case "MESSAGE_CREATE":
|
||
|
pluginModule.socketEvent("MESSAGE_CREATE", data);
|
||
|
break;
|
||
|
case "MESSAGE_UPDATE":
|
||
|
pluginModule.socketEvent("MESSAGE_UPDATE", data);
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
BdWSocket.prototype.onError = function (e) {
|
||
|
utils.log("Socket Error - " + e.message);
|
||
|
};
|
||
|
|
||
|
BdWSocket.prototype.onClose = function (e) {
|
||
|
utils.log("Socket Closed - " + e.code + " : " + e.reason);
|
||
|
clearInterval(bdSocket.interval);
|
||
|
bdws.start();
|
||
|
};
|
||
|
|
||
|
BdWSocket.prototype.send = function (data) {
|
||
|
if (bdSocket.readyState == 1) {
|
||
|
bdSocket.send(JSON.stringify(data));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
BdWSocket.prototype.getSocket = function () {
|
||
|
return bdSocket;
|
||
|
};
|