Fix some bugs
Fix some bugs
This commit is contained in:
48
hqnode.js
48
hqnode.js
@@ -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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user