48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
/**
|
||
* Stüdyo Teleprompter — Express sunucusu
|
||
* Dizindeki public/ klasörünü servis eder, otomatik boş port seçer (3000+).
|
||
*/
|
||
const path = require("path");
|
||
const http = require("http");
|
||
const express = require("express");
|
||
|
||
const app = express();
|
||
const PUBLIC_DIR = path.join(__dirname, "public");
|
||
|
||
// Statik dosyalar
|
||
app.use(express.static(PUBLIC_DIR));
|
||
|
||
// Kök isteği index.html'e yönlendir
|
||
app.get("/", (req, res) => {
|
||
res.sendFile(path.join(PUBLIC_DIR, "index.html"));
|
||
});
|
||
|
||
// 3000'den başlayıp boş olan ilk porta bağlanmayı dener
|
||
function listenAnywhere(port) {
|
||
const server = http.createServer(app);
|
||
return new Promise((resolve) => {
|
||
const attempt = (p) => {
|
||
const trial = server.listen(p);
|
||
trial.once("listening", () => resolve(server.address().port));
|
||
trial.once("error", (err) => {
|
||
if (err.code === "EADDRINUSE") {
|
||
attempt(p + 1);
|
||
} else {
|
||
console.error("Sunucu hatası:", err);
|
||
process.exit(1);
|
||
}
|
||
});
|
||
};
|
||
attempt(port);
|
||
});
|
||
}
|
||
|
||
listenAnywhere(process.env.PORT ? parseInt(process.env.PORT, 10) : 3000)
|
||
.then((port) => {
|
||
console.log("==============================================");
|
||
console.log(" 🎥 Stüdyo Teleprompter çalışıyor");
|
||
console.log(` 📍 http://localhost:${port}`);
|
||
console.log(" 🛑 Durdurmak için Ctrl+C");
|
||
console.log("==============================================");
|
||
});
|