UNPKG

@xrengine/server-core

Version:

Shared components for XREngine server

80 lines (68 loc) 2.28 kB
import { OpenMatchTicket, OpenMatchTicketAssignment } from '@xrengine/matchmaking/src/interfaces' async function waitAndGetMatchUser(app, ticketId, userId, timeout) { return new Promise<any>((resolve, reject) => { setTimeout(async () => { const matchUserResult = await app.service('match-user').find({ query: { ticketId, userId } }) if (Array.isArray(matchUserResult) || matchUserResult.data.length === 0) { resolve(null) return } resolve(matchUserResult.data[0]) }, timeout) }) } export async function emulate_createTicket(gamemode: string): Promise<OpenMatchTicket> { return { id: Math.random().toString(), search_fields: { tags: [gamemode] } } as OpenMatchTicket } export async function emulate_getTicket(app, ticketId, userId): Promise<OpenMatchTicket | void> { const matchUserResult = await app.service('match-user').find({ query: { ticketId, userId } }) if (Array.isArray(matchUserResult) || matchUserResult.data.length === 0) { return } const matchUser = matchUserResult.data[0] return { id: ticketId, search_fields: { tags: [matchUser.gamemode] } } } export async function emulate_getTicketsAssignment(app, ticketId, userId): Promise<OpenMatchTicketAssignment> { // emulate response from open-match-api const matchUser = await waitAndGetMatchUser(app, ticketId, userId, 50) if (!matchUser) { // throw new BadRequest('MatchUser not found. ticket is outdated?') // FIXME: not a valid Error format throw { code: 5, message: `Ticket id: ${ticketId} not found` } } const connection = Math.random().toString() await app.service('match-user').patch(matchUser.id, { connection }) return new Promise<OpenMatchTicketAssignment>((resolve, reject) => { setTimeout(async () => { try { await app.service('match-user').get(matchUser.id) } catch (e) { reject({ code: 5, message: `Ticket id: ${ticketId} not found` }) } const assignment: OpenMatchTicketAssignment = { connection: connection, extensions: { GameMode: { type_url: '', value: matchUser.gamemode } } } resolve(assignment) }, 2000) }) }