kolodziejczak-sz / uwebsocket-serve

Static file serving for uWebSockets.js
16 stars 8 forks source link

Random Issue (not sure why) #9

Open Mistik opened 2 years ago

Mistik commented 2 years ago

Im using uwebsocket-serve to serve some static files (JSON files)

Everything works fine, however sometimes randomly none of my static files show anymore.

I dont understand why, and to resolve this I have no choice but to restart my application

const uws = require('uWebSockets.js');
const {serveDir} = require('uwebsocket-serve');
const fs = require('fs');
const path = require("path");

let server;
const sslPath = path.resolve(__dirname, '../../ssl');
if (fs.existsSync(sslPath)) {
    server = uws.SSLApp({
        key_file_name: path.resolve(__dirname, '../../ssl/key.pem'),
        cert_file_name: path.resolve(__dirname, '../../ssl/cert.pem'),
    });
} else {
    server = uws.App();
}

if (c.servesStatic) {
    const publicPath = path.resolve(__dirname, '../../../public');
    server.get('/*', serveDir(publicPath));
}

server.listen('0.0.0.0', c.port, (ws) => {
    if (ws) {
        start();

        console.log('uWebSockets server listeting on port', c.port);
    }
});

function setCorsHeaders(response) {
    response.writeHeader('Access-Control-Allow-Origin', '*');
    response.writeHeader('Content-Type', 'application/json');
}

server.get("/lib/json/mockups.json", function(response) {
    setCorsHeaders(response);
    response.end(mockupJsonData);
});
server.get("/lib/json/gamemodeData.json", function(response) {
    setCorsHeaders(response);
    response.end(JSON.stringify({
        gameMode: c.gameModeName,
        players: views.length,
        code: [c.MODE, c.MODE === "ffa" ? "f" : c.TEAMS, c.secondaryGameMode].join("-"),
        ip: c.host + ":" + c.port
    }));
});
server.get("/serverData.json", function(response) {
    setCorsHeaders(response);
    response.end(JSON.stringify({
        ok: true,
        ip: c.host + ":" + c.port
    }));
});

function start() {
    server.ws('/*', {
        compression: uws.SHARED_COMPRESSOR,
        idleTimeout: 32,
        maxPayloadLength: 1024 * 1024,
        open: (socket) => {
            sockets.connect(socket);
        },
        message: (socket, payload) => {
            sockets.incoming(payload, socket);
        },
        close: (socket) => {
            sockets.close(socket);
        }
    });
}

module.exports = {
    server
};

Not sure whats causing the static files to stop showing, but there is 0 error in my application when it happened, and nothing in the logs. Any help/advice would be appreciated.