puzzle/src/server/GameSockets.ts

49 lines
1.2 KiB
TypeScript
Raw Normal View History

import { logger } from './../common/Util'
2021-05-17 00:27:47 +02:00
import WebSocket from 'ws'
const log = logger('GameSocket.js')
// Map<gameId, Socket[]>
2021-05-28 23:01:00 +02:00
const SOCKETS = {} as Record<string, WebSocket[]>
2021-05-28 23:01:00 +02:00
function socketExists(gameId: string, socket: WebSocket): boolean {
if (!(gameId in SOCKETS)) {
return false
}
return SOCKETS[gameId].includes(socket)
}
2021-05-28 23:01:00 +02:00
function removeSocket(gameId: string, socket: WebSocket): void {
if (!(gameId in SOCKETS)) {
return
}
2021-05-17 00:27:47 +02:00
SOCKETS[gameId] = SOCKETS[gameId].filter((s: WebSocket) => s !== socket)
log.log('removed socket: ', gameId, socket.protocol)
log.log('socket count: ', Object.keys(SOCKETS[gameId]).length)
}
2021-05-28 23:01:00 +02:00
function addSocket(gameId: string, socket: WebSocket): void {
if (!(gameId in SOCKETS)) {
SOCKETS[gameId] = []
}
if (!SOCKETS[gameId].includes(socket)) {
SOCKETS[gameId].push(socket)
log.log('added socket: ', gameId, socket.protocol)
log.log('socket count: ', Object.keys(SOCKETS[gameId]).length)
}
}
2021-05-28 23:01:00 +02:00
function getSockets(gameId: string): WebSocket[] {
if (!(gameId in SOCKETS)) {
return []
}
return SOCKETS[gameId]
}
export default {
addSocket,
removeSocket,
socketExists,
getSockets,
}