fix api heartbeat

This commit is contained in:
MaksSlyzar 2026-03-31 15:26:34 +03:00
parent b1719978a7
commit 91a49a33cd
4 changed files with 13 additions and 6 deletions

View File

@ -18,14 +18,13 @@ const register = async (req, res) => {
}
};
const heartbeat = async (req, res) => {
const { name, secret } = req.body;
const { name, secret, playersOnline } = req.body;
if (secret !== process.env.GAME_SERVER_SECRET) {
return res.status(401).json({ message: "Unauthorized" });
}
try {
await serverService.updateHeartbeat(name);
await serverService.updateHeartbeat(name, playersOnline);
res.json({ status: "ok" });
} catch (error) {
res.status(500).json({ message: error.message });

View File

@ -22,6 +22,10 @@ const userSchema = new mongoose.Schema(
required: [true, "Password is required"],
minlength: [6, "Password must be at least 6 characters long"],
},
playersOnline: {
type: Number,
default: 0,
},
role: {
type: String,
enum: ["user", "admin"],

View File

@ -18,10 +18,14 @@ const registerGameServer = async (serverData) => {
console.log(`📡 [REGISTRY] Game Server "${name}" at ${url} is now ONLINE`);
return server;
};
const updateHeartbeat = async (name) => {
const updateHeartbeat = async (name, playersOnline) => {
return await GameServer.findOneAndUpdate(
{ name },
{ lastHeartbeat: Date.now(), status: "online" },
{
lastHeartbeat: Date.now(),
status: "online",
playersOnline: playersOnline,
},
);
};

View File

@ -61,7 +61,7 @@ const registerInApi = async () => {
}
};
const HEARTBEAT_INTERVAL = 30000;
const HEARTBEAT_INTERVAL = 1000;
const sendHeartbeat = async () => {
try {
await axios.post(`${config.apiBaseUrl}/servers/heartbeat`, {