Initial commit
This commit is contained in:
182
server.js
Normal file
182
server.js
Normal file
@@ -0,0 +1,182 @@
|
||||
const http = require('http');
|
||||
const url = require('url');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
var socketIo = require('socket.io');
|
||||
const dbsSrv = require('./core/dbService')
|
||||
const crdSrv = require('./core/cardService');
|
||||
var port = process.env.port || 1337;
|
||||
|
||||
const server = http.createServer(function (req, res) {
|
||||
var parsedUrl = url.parse(req.url);
|
||||
var pathname = `.${parsedUrl.pathname}`;
|
||||
var ext = path.parse(pathname).ext;
|
||||
var mimeType = {
|
||||
'.ico': 'image/x-icon',
|
||||
'.html': 'text/html',
|
||||
'.js': 'text/javascript',
|
||||
'.json': 'application/json',
|
||||
'.css': 'text/css',
|
||||
'.png': 'image/png',
|
||||
'.jpg': 'image/jpeg',
|
||||
'.wav': 'audio/wav',
|
||||
'.mp3': 'audio/mpeg',
|
||||
'.svg': 'image/svg+xml',
|
||||
'.pdf': 'application/pdf',
|
||||
'.doc': 'application/msword',
|
||||
'.eot': 'appliaction/vnd.ms-fontobject',
|
||||
'.ttf': 'aplication/font-sfnt'
|
||||
};
|
||||
var parts = pathname.split("/");
|
||||
|
||||
if (parts[1] === 'api') {
|
||||
switch (parts[2]) {
|
||||
case 'login':
|
||||
dbsSrv.systemAccess(req, res);
|
||||
break;
|
||||
case 'service':
|
||||
dbsSrv.systemService(req, res);
|
||||
break;
|
||||
case 'logout':
|
||||
dbsSrv.systemExit(req, res);
|
||||
break;
|
||||
default:
|
||||
res.statusCode = 500;
|
||||
res.end('Invalid Service Request');
|
||||
break;
|
||||
};
|
||||
return;
|
||||
};
|
||||
|
||||
if (ext === '.svg') {
|
||||
crdSrv.getSvg(path.basename(pathname, '.svg'), res)
|
||||
return;
|
||||
}
|
||||
|
||||
if (['.jpg', '.png'].indexOf(ext) > -1)
|
||||
pathname = './Images/' + path.basename(pathname);
|
||||
|
||||
fs.exists(pathname, function (exist) {
|
||||
if (!exist || fs.statSync(pathname).isDirectory()) {
|
||||
pathname = "./public/index.html";
|
||||
ext = ".html";
|
||||
}
|
||||
|
||||
fs.readFile(pathname, function (err, data) {
|
||||
if (err) {
|
||||
res.statusCode = 500;
|
||||
res.end(`Error getting the file: ${err}.`);
|
||||
} else {
|
||||
res.setHeader('Content-type', mimeType[ext] || 'text/plain');
|
||||
res.end(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
returnGood = () => {
|
||||
}
|
||||
|
||||
returnBad = (err) => {
|
||||
}
|
||||
})
|
||||
|
||||
const io = socketIo(server)
|
||||
io.sockets.on("connection", socket => {
|
||||
// console.log(socket.id + " connected");
|
||||
var token = socket.handshake.query.token
|
||||
var game = socket.handshake.query.game
|
||||
socket.join(game);
|
||||
socket.on('reqPlayers', (data) => {
|
||||
data['soc'] = socket.id
|
||||
dbsSrv.systemAction(token, game, data, (err, resp) => {
|
||||
let plyr = JSON.parse(resp)
|
||||
io.sockets.in(game).emit('player', { players: plyr.players, live: plyr.live });
|
||||
io.sockets.in(game).emit('status', plyr.status)
|
||||
if (plyr.nxt)
|
||||
io.sockets.to(plyr.nxt.soc).emit('myturn', { coin: plyr.nxt.coin, avail: plyr.nxt.avail });
|
||||
});
|
||||
});
|
||||
socket.on('reqBoardCards', (data) => {
|
||||
dbsSrv.systemAction(token, game, data, (err, cards) => {
|
||||
let obj = JSON.parse(cards)
|
||||
obj.board.map((crd) => {
|
||||
crdSrv.BoardCard(crd, (err, resp) => {
|
||||
socket.emit(game).emit('boardCard', resp);
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
socket.on('reqDealtHand', (data) => {
|
||||
dbsSrv.systemAction(token, game, data, (err, cards) => {
|
||||
let obj = JSON.parse(cards)
|
||||
obj.hand.map((crd) => {
|
||||
crdSrv.DealtCard(crd, (err, resp) => {
|
||||
socket.emit('dealtCard', resp);
|
||||
});
|
||||
})
|
||||
})
|
||||
});
|
||||
socket.on('reqNewGame', (data) => {
|
||||
dbsSrv.systemAction(token, game, data, (err, resp) => {
|
||||
let plyr = JSON.parse(resp)
|
||||
io.sockets.in(game).emit('status', plyr.status)
|
||||
if (plyr.status.typ === 2) {
|
||||
data['id'] = 'BRDCRD'
|
||||
dbsSrv.systemAction(token, game, data, (err, cards) => {
|
||||
let obj = JSON.parse(cards)
|
||||
obj.board.map((crd) => {
|
||||
crdSrv.BoardCard(crd, (err, resp) => {
|
||||
io.sockets.in(game).emit('boardCard', resp);
|
||||
})
|
||||
})
|
||||
})
|
||||
dbsSrv.nextPlayer(game, data, (err, next) => {
|
||||
let nxt = JSON.parse(next)
|
||||
io.sockets.to(nxt.soc).emit('myturn', { coin: nxt.coin, avail: nxt.avail });
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
socket.on('PlayCard', (data) => {
|
||||
data.soc = socket.id
|
||||
dbsSrv.systemAction(token, game, data, (err, plyd) => {
|
||||
let obj = JSON.parse(plyd)
|
||||
obj.cards.map((crd) => {
|
||||
crdSrv.BoardCard(crd, (err, resp) => {
|
||||
io.sockets.in(game).emit('boardCard', resp)
|
||||
});
|
||||
})
|
||||
io.sockets.in(game).emit('status', obj.status)
|
||||
// continue if game not over
|
||||
if (obj.status.typ === 0) {
|
||||
data['id'] = 'CRDNXT'
|
||||
dbsSrv.systemAction(token, game, data, (err, resp) => {
|
||||
let crd = JSON.parse(resp)
|
||||
crdSrv.DealtCard(crd, (err, image) => {
|
||||
socket.emit('dealtCard', image);
|
||||
});
|
||||
})
|
||||
// next player - check discards - update avail
|
||||
dbsSrv.nextPlayer(game, data, (err, next) => {
|
||||
let nxt = JSON.parse(next)
|
||||
nxt.dscrd.map((d) => {
|
||||
crdSrv.DealtCard(d, (err, image) => {
|
||||
io.sockets.to(nxt.soc).emit('dealtCard', image);
|
||||
});
|
||||
})
|
||||
io.sockets.to(nxt.soc).emit('myturn', { coin: nxt.coin, avail: nxt.avail });
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
socket.on('disconnect', () => {
|
||||
let data = { id: 'PLYERS', act: 0, soc: '' }
|
||||
dbsSrv.systemAction(token, game, data, (err, resp) => {
|
||||
let plyr = JSON.parse(resp)
|
||||
io.sockets.to(game).emit('player', { players: plyr.players, live: plyr.live });
|
||||
io.sockets.to(game).emit('status', plyr.status)
|
||||
});
|
||||
});
|
||||
});
|
||||
server.listen(port);
|
||||
module.exports = server
|
||||
Reference in New Issue
Block a user