mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-02-26 20:59:48 +00:00
36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
#include "WSRoutes.h"
|
|
#include "ServerState.h"
|
|
#include "Web.h"
|
|
#include "json.hpp"
|
|
#include "Game.h"
|
|
#include "Database.h"
|
|
#include "Logger.h"
|
|
|
|
void RegisterWSRoutes() {
|
|
// Register WebSocket subscriptions for real-time updates
|
|
Game::web.RegisterWSSubscription("dashboard_update");
|
|
Game::web.RegisterWSSubscription("server_status");
|
|
Game::web.RegisterWSSubscription("player_joined");
|
|
Game::web.RegisterWSSubscription("player_left");
|
|
|
|
// dashboard_update: Broadcasts complete dashboard data every 2 seconds
|
|
// Other subscriptions can be triggered by events from the master server
|
|
}
|
|
|
|
void BroadcastDashboardUpdate() {
|
|
// Get server state data (auth, chat, worlds) - mutex is acquired internally
|
|
nlohmann::json data = ServerState::GetServerStateJson();
|
|
|
|
// Add statistics
|
|
try {
|
|
data["stats"]["onlinePlayers"] = 0; // TODO: Get from server communication
|
|
data["stats"]["totalAccounts"] = Database::Get()->GetAccountCount();
|
|
data["stats"]["totalCharacters"] = Database::Get()->GetCharacterCount();
|
|
} catch (const std::exception& ex) {
|
|
LOG_DEBUG("Error getting stats: %s", ex.what());
|
|
}
|
|
|
|
// Broadcast to all connected WebSocket clients subscribed to "dashboard_update"
|
|
Game::web.SendWSMessage("dashboard_update", data);
|
|
}
|