From 26b2bdc6e595bf849b6975433fb0ddacb81051d9 Mon Sep 17 00:00:00 2001 From: Bingus_Violet Date: Mon, 19 Feb 2024 10:57:50 -0600 Subject: [PATCH] Reconnect automatically --- index.js | 78 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/index.js b/index.js index 68ff2d2..6ae0ff1 100644 --- a/index.js +++ b/index.js @@ -34,47 +34,53 @@ app.get("/v1/lanyard", (req, res) => { // console.log("API is now listening on port 8080!") // }) -var lanyard = new WebSocket('wss://api.lanyard.rest/socket') +function socketeer() { + var lanyard = new WebSocket('wss://api.lanyard.rest/socket') -function beat(dur) { - lanyard.send(JSON.stringify({ - op: 3 - })) - setTimeout(() => { - beat(dur) - }, dur); -} - -lanyard.addEventListener("message", async (res) => { - var data = JSON.parse(res.data) - if (data.op == 1) { - beat(data.d.heartbeat_interval) + function beat(dur) { lanyard.send(JSON.stringify({ - op: 2, - d: { - subscribe_to_id: "534132311781015564" - } + op: 3 })) - } else if (data.op == 0) { - lanyardData = data + setTimeout(() => { + beat(dur) + }, dur); + } - for (let index = 0; index < sockets.length; index++) { - var socketData = sockets[index] - var socket = socketData.socket; - socket.send(JSON.stringify(lanyardData)) + lanyard.addEventListener("message", async (res) => { + var data = JSON.parse(res.data) + if (data.op == 1) { + beat(data.d.heartbeat_interval) + lanyard.send(JSON.stringify({ + op: 2, + d: { + subscribe_to_id: "534132311781015564" + } + })) + } else if (data.op == 0) { + lanyardData = data - if ((Date.now() - socketData.lastPing) > 120000) { - sockets.splice(index, 1) + for (let index = 0; index < sockets.length; index++) { + var socketData = sockets[index] + var socket = socketData.socket; + socket.send(JSON.stringify(lanyardData)) + + if ((Date.now() - socketData.lastPing) > 120000) { + sockets.splice(index, 1) + } } } - } -}) + }) -lanyard.on('close', () => { - console.log("Disconnected") -}) + lanyard.on('close', () => { + console.log("Disconnected") + setTimeout(() => { + socketeer() + }, 60000) + }) +} // wsServer = new WebSocket.WebSocketServer({ port: 8090 }) + wsServer = WebSocket.Server; let server = require('http').createServer() wsServer = new wsServer({ @@ -93,17 +99,17 @@ wsServer.on("connection", function connection(socket) { sockets[index].lastPing = Date.now() } } - + socket.send(`{"op": 3}`) - } + } }) - + socket.send(JSON.stringify(lanyardData)) socket.send(`{ "op": 1 }`) - sockets.push({socket, lastPing: Date.now()}) + sockets.push({ socket, lastPing: Date.now() }) }) -server.listen(PORT, function() { +server.listen(PORT, function () { console.log("API & Websocket now on port: " + PORT) }) \ No newline at end of file