52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
import { Server as IoServer } from 'socket.io';
|
|
import express from 'express';
|
|
import { Server } from 'http';
|
|
import cors from 'cors';
|
|
import { applyArrayPlugins, Random, serverInformationEndpoint } from 'shared';
|
|
import minimist from 'minimist';
|
|
import { glMatrix } from 'gl-matrix';
|
|
import { GameServer } from './game-server';
|
|
import { defaultOptions } from './default-options';
|
|
import parser from 'socket.io-msgpack-parser';
|
|
|
|
glMatrix.setMatrixArrayType(Array);
|
|
applyArrayPlugins();
|
|
|
|
const optionOverrides = minimist(process.argv.slice(2));
|
|
const options = {
|
|
...defaultOptions,
|
|
...optionOverrides,
|
|
};
|
|
|
|
Random.seed = options.seed;
|
|
|
|
const app = express();
|
|
const server = new Server(app);
|
|
const io = new IoServer(server, {
|
|
parser,
|
|
cors: {
|
|
origin: true,
|
|
credentials: true,
|
|
},
|
|
} as any);
|
|
|
|
const gameServer = new GameServer(io, options);
|
|
|
|
app.use(
|
|
cors({
|
|
origin: (_, callback) => {
|
|
callback(null, true);
|
|
},
|
|
credentials: true,
|
|
}),
|
|
);
|
|
|
|
app.get(serverInformationEndpoint, (_, res) => {
|
|
res.json(gameServer.serverInfo);
|
|
});
|
|
|
|
server.listen(options.port, () => {
|
|
console.info(`Server started on port ${options.port}`);
|
|
});
|
|
|
|
gameServer.start();
|