Docker SDK drives login/char/worldserver containers via docker.sock (mounted read-only into webadmin); live logs stream over SSE with nginx buffering disabled so lines arrive in real time. Broadcast/kick go through a new admin_queue DB table that the world server polls every ~2s in its existing WorldProcess tick loop, avoiding a second IPC channel to the game server.
15 lines
553 B
SQL
15 lines
553 B
SQL
--
|
|
-- Queue table the webadmin panel writes to and the world server polls
|
|
-- (in WorldProcess, MainProcess.cpp) to execute broadcast/kick actions
|
|
-- without needing a direct socket between the two processes.
|
|
--
|
|
|
|
CREATE TABLE IF NOT EXISTS `admin_queue` (
|
|
`id` int(11) NOT NULL auto_increment,
|
|
`type` varchar(20) NOT NULL,
|
|
`payload` varchar(255) NOT NULL,
|
|
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`executed` tinyint(1) NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
|