Files
GMW/services/backend/src/http/server.ts
T

37 lines
1.1 KiB
TypeScript
Raw Normal View History

import { createServer, type Server } from "node:http";
import { createChildLogger } from "@/shared/logger/index";
import { config } from "../shared/config/index.js";
import { initializeDatabase } from "../shared/database/index.js";
import { startRedisBridge } from "../ws/redis-bridge.js";
import { createWebSocketServer } from "../ws/server.js";
import { createHttpApp } from "./app.js";
const logger = createChildLogger("http.server");
export async function startHttpServer(): Promise<Server> {
await initializeDatabase();
const app = createHttpApp();
const port = config.WEBSERVER_PORT;
const server = createServer(app);
// Attach WebSocket server to the same HTTP server
createWebSocketServer(server);
// Start Redis pub/sub bridge to forward discord-gateway events to WS clients
await startRedisBridge();
return new Promise<Server>((resolve, reject) => {
server.listen(port, () => {
logger.info({ port }, "HTTP server started");
resolve(server);
});
server.on("error", (err) => {
logger.error({ err }, "HTTP server error");
reject(err);
});
});
}