Fix some bugs

Fix some bugs
This commit is contained in:
eTronic
2018-06-24 19:10:48 -04:00
parent 7a74269c24
commit c5b333dded

View File

@@ -1,3 +1,4 @@
import prompt from 'prompt';
import request from 'request';
import WebSocket from 'ws';
@@ -15,9 +16,24 @@ const headers = {
let playersInGame = players.map((player) => new Account(player));
const removePlayer = (userId) => {
playersInGame = players.filter((player) => player.userId !== userId);
playersInGame = playersInGame.filter((player) => player.userId !== userId);
}
let TIMEOUT = null;
const ping = (ws) => {
console.log('PING!');
ws.ping();
TIMEOUT = setTimeout(() => {
console.log('Connection Closed');
}, 2000);
};
const pong = () => {
console.log('PONG!');
clearTimeout(TIMEOUT);
};
request('https://api-quiz.hype.space/shows/now', (error, response, body) => {
const result = JSON.parse(body);
@@ -32,9 +48,16 @@ request('https://api-quiz.hype.space/shows/now', (error, response, body) => {
};
const ws = new WebSocket(socketUrl, options);
ws.on('error', (err) => {
console.log('An error occurred in the WebSocket: ', err);
});
ws.on('pong', pong);
ws.on('open', () => {
setInterval(() => ping(ws), 10000);
console.log('Master connected to websocket');
playersInGame.forEach((player) => {
playersInGame.forEach((player, index) => {
const playerOptions = {
headers: {
Authorization: `Bearer ${player.accessToken}`,
@@ -42,9 +65,9 @@ request('https://api-quiz.hype.space/shows/now', (error, response, body) => {
};
const pws = new WebSocket(socketUrl, playerOptions);
pws.on('open', () => {
console.log(`Player ${player.username} has connected to websocket`);
console.log(`Player #${index} has connected to websocket`);
pws.send(JSON.stringify({ type:'subscribe', broadcastId }), () => {
console.log(`\tPlayer ${player.username} has subscribed to game`);
console.log(`\tPlayer #${index} has subscribed to game`);
player.activate(broadcastId, pws);
});
});
@@ -60,14 +83,19 @@ request('https://api-quiz.hype.space/shows/now', (error, response, body) => {
}
if (type === 'questionSummary') {
const questionSummary = JSON.parse(data);
const correctAnswer = questionSummary.answerCounts.filter(answer => answer.correct).answerId;
const correctAnswer = questionSummary.answerCounts.find(answer => answer.correct).answerId;
const wrongPlayers = [];
playersInGame.forEach((player) => {
if (player.lastAnswerId !== correctAnswer) {
console.log(`Player ${player.username} has been eliminated.`);
removePlayer(player.userId);
//console.log(`Player ${player.username} has been eliminated.`);
wrongPlayers.push(player.userId);
}
});
console.log(`${wrongPlayers.length} players have been eliminated.`);
wrongPlayers.forEach(userId => removePlayer(userId));
}
if (type !== 'question') return;
const { questionNumber, question: theQuestion, questionId } = JSON.parse(data);
@@ -83,7 +111,7 @@ request('https://api-quiz.hype.space/shows/now', (error, response, body) => {
switch (input.length) {
case 1:
playersInGame.forEach((player, index) => {
console.log(`Player ${player.username} sent answer ${input[0]}`);
console.log(`Player #${index} sent answer ${input[0]}`);
const callback = (correct) => {
if (!correct) playersInGame.splice(index, 1);
};
@@ -92,7 +120,7 @@ request('https://api-quiz.hype.space/shows/now', (error, response, body) => {
break;
case 2:
playersInGame.forEach((player, index) => {
console.log(`Player ${player.username} sent answer ${input[index % 2]}`);
console.log(`Player #${index} sent answer ${input[index % 2]}`);
const callback = (correct) => {
if (!correct) playersInGame.splice(index, 1);
};
@@ -101,7 +129,7 @@ request('https://api-quiz.hype.space/shows/now', (error, response, body) => {
break;
case 3:
playersInGame.forEach((player, index) => {
console.log(`Player ${player.username} sent answer ${input[index % 3]}`);
console.log(`Player #${index} sent answer ${input[index % 3]}`);
const callback = (correct) => {
if (!correct) playersInGame.splice(index, 1);
};