Files
DAdmin/plugins/wss.js

64 lines
2.1 KiB
JavaScript

const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');
const { parse, stringify } = require('flatted/cjs');
module.exports = {
name: "Websockets Server (8080)",
init: (dclient) => {
const server = https.createServer({
cert: fs.readFileSync('./cert.pem'),
key: fs.readFileSync('./privkey.pem')
});
const wss = new WebSocket.Server({ server });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
try {
var data = parse(message)
var response = {
type: "data",
data: new Array()
}
if (data.type == "request") {
for (var i = 0; i < data.requests.length; i++) {
var resp = ""
if (data.requests[i] == "name")
resp = dclient.user.username
if (data.requests[i] == "id")
resp = dclient.user.id
if (data.requests[i] == "discriminator")
resp = dclient.user.discriminator
if (data.requests[i] == "avatar")
resp = dclient.user.avatarURL
response.data.push({ type: data.requests[i], data: resp })
}
ws.send(JSON.stringify(response))
}
}
catch (error) {
console.log(error)
}
});
ws.send('Connected');
});
setInterval(() => { //heartbeat
wss.clients.forEach(client => {
if (client.readyState == client.OPEN) {
client.send(JSON.stringify({ type: "heartbeat", time: new Date().getTime() }))
client.ping()
}
});
}, 30000);
server.listen(8080);
}
}