74 lines
1.7 KiB
TypeScript
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");
|
|
}); |