KF-MMO-Server/index.ts

74 lines
1.7 KiB
TypeScript

import { registerAccountCallbacks } from "./Account/accountSocket";
import { users } from "./Account/users";
import { registerLobbyCallbacks } from "./Lobby/lobbySocket";
import { playerData } from "./Player/playerData";
import { game } from "./game";
const express = require("express");
const app = express();
const port = 3000;
const server = require('http').Server(app);
var connectedUsers = {}
server.listen(port, () => {
console.log(`Server listening at port ${port}`);
});
const io = require("socket.io")(server, {
cors: {
origin: '*',
methods: ["GET", "POST"]
}
});
users.loadUsers();
io.on('connection', (socket) => {
console.log("Got connection!");
socket.emit("connectSuccess", "");
registerAccountCallbacks(socket);
registerLobbyCallbacks(socket);
socket.io = io;
let id = socket.id;
let player = new playerData(id)
connectedUsers[id] = true;
game.DBPlayers[id] = player
socket.on("disconnect", () => {
delete connectedUsers[id]
socket.disconnect()
console.log(id + " disconnected");
});
socket.on('error',function(er){
console.log(er);
});
});
setInterval(() => {
let list = []
for (var key in connectedUsers) {
if (game.DBPlayers.hasOwnProperty(key)){
list.push(game.DBPlayers[key]);
}
}
let userCount = list.length
if(userCount > 0){
io.emit('lobby', JSON.stringify(list))
}
}, 1000/30)
setInterval(() => {
console.log("Connected losers: " + Object.keys(connectedUsers).length);
}, 60 * 1000)
process.on('SIGINT', function () {
console.log('Ctrl-C...');
process.exit(2);
});
process.on('exit', function () {
users.saveUsers();
console.log("exitted");
});