@@ -7,6 +7,7 @@ const Net = require("net");
77class 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