What is the best method for using MessagingService to create server lists?

I’m currently creating a habbo hotel styled game where players can create their own rooms and join them using a server list, but I’m currently having some issues finding out the best method to use the MessagingService without exceeding the limits.

The script I’m using had some changes recently, so I’ll separate each method:

Automatic messaging (old)
  • If a room was loaded correctly and the category was considered public either by preset or the room owner, the script would send a message to the topic “Server_Status” every 5 seconds, it worked pretty well at the start, however after a long time, the following error message would start appearing:

    I assumed it started happening because I was sending too quickly, so I decided to remake the script.
    Interesting note: This error message started appearing after another normal “publish exceed” error and after it started, it would never stop, even after leaving the game offline for a day, as if it just couldn’t reset the messaging budget. :thinking:
Manual messaging

This is the new method and It’s a little complex to explain in a massive text, so I’ll make it simple:

1 - Client clicks to open the room list and checks if the “Reload_Cooldown” variable is currently set to zero, if so, it will fire a remote event
2 - Server received the reload request, it checks again for the same variable and changes the cooldown to 50 seconds just to prevent spamming, then it sends a message to “Room_Request”

3 - Room received the message and checks if it can actually send back it’s status, if so, it will send the status back to the menu

4 - Server received room status and it creates the required stuff for the server to appear on the list, or just updates if it already exists
5 - Server checks for the last value of the table, if the message it just received was actually from a reload request, it will update the cooldown to 60 seconds, this means that if someone reloads the list, everyone will also reload using the same message

the last one is important because the room can also update the menu to say it has no players left and it’s closing, this type of message does not affect the reload cooldown

This is the first image that I made while working on it:

read at least one of them before procceeding
On both methods, this is the data sent from the room to the menu (not including the IsFetched variable on the message[7])

I haven’t tested too much the new script, so I would like to see if someone has a better idea on how to make a server list, if you have one, please tell.