changed api names to make them more fitting, incase i want a player endpoint later
This commit is contained in:
@@ -1,46 +0,0 @@
|
||||
import { globalEmitter, getPlayers } from '$lib/server/eventManager';
|
||||
|
||||
// Expose endpoint
|
||||
export async function GET() {
|
||||
// expose function type to both start and cancel
|
||||
let playerList: () => Promise<void>;
|
||||
|
||||
// When request recieved open a new websocket
|
||||
const stream = new ReadableStream({
|
||||
// Make a new controller so I can send messages
|
||||
async start(controller) {
|
||||
// Function for sending messages
|
||||
const enqueue = (data: any) => {
|
||||
let transferdata = JSON.stringify(data);
|
||||
// stringify data and add to controller queue
|
||||
controller.enqueue(`data: ${transferdata}\n\n`);
|
||||
};
|
||||
|
||||
// Function to grab score from database and add it to message queue
|
||||
playerList = async () => {
|
||||
let players = await getPlayers();
|
||||
enqueue(players);
|
||||
};
|
||||
|
||||
// Update score on connection so everything is synced
|
||||
enqueue(await getPlayers());
|
||||
// Update score every time the emitter emits that the score has been changed
|
||||
globalEmitter.on('playerUpdate', playerList);
|
||||
},
|
||||
cancel() {
|
||||
// Delete the emitter listener so that the server doesnt crash
|
||||
globalEmitter.off('playerUpdate', playerList);
|
||||
console.log('closed');
|
||||
}
|
||||
});
|
||||
|
||||
// Return a response with an eventstream mime type
|
||||
return new Response(stream, {
|
||||
headers: {
|
||||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache',
|
||||
Connection: 'keep-alive',
|
||||
'X-Accel-Buffering': 'no'
|
||||
}
|
||||
});
|
||||
}
|
||||
54
src/routes/api/registeredEvents/+server.ts
Normal file
54
src/routes/api/registeredEvents/+server.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import {
|
||||
globalEmitter,
|
||||
getRegisteredEvents,
|
||||
getAllRegisteredEventPlayers
|
||||
} from '$lib/server/eventManager';
|
||||
import { generateEndpoint } from '$lib/server/endpoint';
|
||||
|
||||
export async function GET() {
|
||||
// Generate stream endpoint
|
||||
const endpoint = generateEndpoint(async (enqueue) => {
|
||||
const eventList = async () => {
|
||||
// Get updated events from database
|
||||
let newEvents = await getRegisteredEvents();
|
||||
let registeredEventList = newEvents['events'];
|
||||
|
||||
let fullEventList: any[] = [];
|
||||
|
||||
// For every event
|
||||
for (let registeredEvent in registeredEventList) {
|
||||
let event = registeredEventList[registeredEvent];
|
||||
|
||||
// Get all players for the event
|
||||
let registeredPlayers = await getAllRegisteredEventPlayers(event.id);
|
||||
|
||||
// Some nonsense to extract the players into a better object
|
||||
let registeredPlayersVec: any[] = [];
|
||||
for (let player in registeredPlayers.eventPlayers) {
|
||||
let currentPlayer = registeredPlayers.eventPlayers[player];
|
||||
registeredPlayersVec.push(currentPlayer);
|
||||
}
|
||||
|
||||
// add registeredPlayers as part of the event object
|
||||
let eventWithPlayers = {
|
||||
...event,
|
||||
registeredPlayers: registeredPlayersVec
|
||||
};
|
||||
// combine all of the events into one array
|
||||
fullEventList.push(eventWithPlayers);
|
||||
}
|
||||
// Send to client
|
||||
enqueue(fullEventList);
|
||||
};
|
||||
|
||||
// Initial Sync
|
||||
eventList();
|
||||
globalEmitter.on('eventUpdate', eventList);
|
||||
|
||||
// Simply return the cleanup function here
|
||||
return () => {
|
||||
globalEmitter.off('eventUpdate', eventList);
|
||||
};
|
||||
});
|
||||
return (await endpoint).response;
|
||||
}
|
||||
9
src/routes/api/registeredPlayers/+server.ts
Normal file
9
src/routes/api/registeredPlayers/+server.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { globalEmitter, getAllRegisteredEventPlayers } from '$lib/server/eventManager';
|
||||
import { generateEndpoint } from '$lib/server/endpoint';
|
||||
|
||||
// Expose post request
|
||||
export async function POST({ request }: any) {
|
||||
// When post request recieved increment testscores by 1
|
||||
// Return ok so the frontend is happy
|
||||
return new Response('ok');
|
||||
}
|
||||
@@ -1,49 +1,5 @@
|
||||
import { globalEmitter, getTeams } from '$lib/server/eventManager';
|
||||
|
||||
// Expose endpoint
|
||||
export async function GET() {
|
||||
// expose function type to both start and cancel
|
||||
let newScore: () => Promise<void>;
|
||||
|
||||
// When request recieved open a new websocket
|
||||
const stream = new ReadableStream({
|
||||
// Make a new controller so I can send messages
|
||||
start(controller) {
|
||||
// Function for sending messages
|
||||
const enqueue = (data: any) => {
|
||||
let transferdata = JSON.stringify(data);
|
||||
// stringify data and add to controller queue
|
||||
controller.enqueue(`data: ${transferdata}\n\n`);
|
||||
};
|
||||
|
||||
// Function to grab score from database and add it to message queue
|
||||
newScore = async () => {
|
||||
let newScores = await getTeams();
|
||||
enqueue(newScores);
|
||||
};
|
||||
|
||||
// Update score on connection so everything is synced
|
||||
enqueue(getTeams());
|
||||
// Update score every time the emitter emits that the score has been changed
|
||||
globalEmitter.on('scoreUpdate', newScore);
|
||||
},
|
||||
cancel() {
|
||||
// Delete the emitter listener so that the server doesnt crash
|
||||
globalEmitter.off('scoreUpdate', newScore);
|
||||
console.log('closed');
|
||||
}
|
||||
});
|
||||
|
||||
// Return a response with an eventstream mime type
|
||||
return new Response(stream, {
|
||||
headers: {
|
||||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache',
|
||||
Connection: 'keep-alive',
|
||||
'X-Accel-Buffering': 'no'
|
||||
}
|
||||
});
|
||||
}
|
||||
import { generateEndpoint } from '$lib/server/endpoint';
|
||||
|
||||
// Expose post request
|
||||
export async function POST({ request }: any) {
|
||||
@@ -52,3 +8,23 @@ export async function POST({ request }: any) {
|
||||
// Return ok so the frontend is happy
|
||||
return new Response('ok');
|
||||
}
|
||||
|
||||
export async function GET() {
|
||||
const endpoint = generateEndpoint(async (enqueue) => {
|
||||
// Function to grab score from database and add it to message queue
|
||||
let newScore = async () => {
|
||||
let newScores = await getTeams();
|
||||
enqueue(newScores);
|
||||
};
|
||||
|
||||
// Initial Sync
|
||||
newScore();
|
||||
globalEmitter.on('scoreUpdate', newScore);
|
||||
|
||||
// Simply return the cleanup function here
|
||||
return () => {
|
||||
globalEmitter.off('scoreUpdate', newScore);
|
||||
};
|
||||
});
|
||||
return (await endpoint).response;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user