Skip to content

Commit 5952ba1

Browse files
committed
Added a cooldown of 1001ms between messages
1 parent f8a135d commit 5952ba1

1 file changed

Lines changed: 22 additions & 7 deletions

File tree

src/network/messageReceiver.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const Net = require("net");
77
class MessageReceiver {
88
#socketServer;
99
#boundChannels;
10+
#buffer = "";
1011

1112
/**
1213
* Opens a new server socket on a specified port
@@ -18,24 +19,38 @@ class MessageReceiver {
1819

1920
this.#socketServer.listen(port, () => console.log(`Listening for messages on localhost:${port}`));
2021
this.#socketServer.on("connection", this.#onConnection.bind(this));
22+
23+
setInterval(this.#messageSender.bind(this), 1001); // Makes sure the time between two messages sent is > 1s
24+
}
25+
26+
/**
27+
* Sends the message in the buffer to Discord and clears the buffer
28+
*/
29+
#messageSender() {
30+
if (this.#buffer === "")
31+
return;
32+
33+
var tempBuffer = this.#buffer;
34+
this.#buffer = "";
35+
this.#boundChannels.forEach(channel => channel.send(tempBuffer.slice(0, tempBuffer.length-1)));
2136
}
2237

2338
/**
24-
* Gets called when a message is received on the server socket and forwards said message
25-
* to Discord
39+
* Gets called when a message is received on the server socket and adds said message
40+
* to the buffer
2641
* @param {Net.Socket} socket
2742
*/
2843
#onConnection(socket) {
29-
socket.on("data", chunk => this.#boundChannels.forEach(channel => {
44+
socket.on("data", chunk => {
3045
try {
3146
var jsonObj = JSON.parse(chunk.toString()); // A message will never be larger than a chunk can handle so this should be fine
32-
var msg = (jsonObj["sender"] === undefined) ? jsonObj["message"] : `**${jsonObj["sender"]}:** ${jsonObj["message"]}`
33-
channel.send(msg);
47+
var msg = (jsonObj["sender"] === undefined) ? jsonObj["message"] : `**${jsonObj["sender"]}:** ${jsonObj["message"]}`;
48+
this.#buffer += `${msg}\n`;
3449
} catch {
3550
console.log(`Invalid JSON: ${chunk.toString()}`);
36-
channel.send("Message data lost");
51+
this.#buffer += "Message data lost\n";
3752
}
38-
}));
53+
});
3954
}
4055

4156
/**

0 commit comments

Comments
 (0)