corgi/src/services/WsSvr.ts
2021-04-30 13:09:13 +08:00

175 lines
3.6 KiB
TypeScript

import axios from 'axios'
const apiBase = 'http://127.0.0.1:2668/api'
/**
* 发送私信给玩家
* @param roomId
* @param clientId
* @param type
* @param msg
* @return {Promise<AxiosResponse<any>>}
*/
export async function sendMsg(roomId, clientId, type, msg) {
const url = `${apiBase}/room/call`
const args = [clientId, type, msg]
const data = {
roomId,
method: 'smsg',
args: JSON.stringify(args)
}
return axios.post(url, data)
.then(res => {
return res.data
})
}
/**
* 发送广播消息
* @param roomId
* @param type
* @param msg
* @return {Promise<AxiosResponse<any>>}
*/
export async function broadcast(roomId, type, msg) {
const url = `${apiBase}/broadcast`
const data = {
roomId,
type,
msg
}
return axios.post(url, data)
.then(res => {
return res.data
})
}
/**
* 从房间踢掉玩家
* @param roomId
* @param clientId
* @return {Promise<AxiosResponse<any>>}
*/
export async function kickClient(roomId, clientId) {
const url = `${apiBase}/room/call`
const args = [clientId]
const data = {
roomId,
method: '_forceClientDisconnect',
args: JSON.stringify(args)
}
return axios.post(url, data)
.then(res => {
return res.data
})
}
/**
* 开始游戏
* @param roomId
* @param params
* @return {Promise<AxiosResponse<any>>}
*/
export async function beginGame(roomId, params) {
console.log(`begin game: ${roomId}, ${params}`)
const url = `${apiBase}/room/call`
const args = [params]
const data = {
roomId,
method: 'beginGame',
args: JSON.stringify(args)
}
return axios.post(url, data)
.then(res => {
return res.data
})
}
export async function endGame(roomId, params) {
console.log(`end game: ${roomId}, ${params}`)
const url = `${apiBase}/room/call`
const args = [params]
const data = {
roomId,
method: 'endGame',
args: JSON.stringify(args)
}
return axios.post(url, data)
.then(res => {
return res.data
})
}
/**
* 创建房间
* @param data
* @return {Promise<AxiosResponse<any>>}
*/
export async function createRoom(data) {
const url = `${apiBase}/matchmake/joinOrCreate/puzzle_room`
return axios.post(url, data)
}
/**
* 加入房间
* @param data
* @return {Promise<AxiosResponse<any>>}
*/
export async function joinRoom(data) {
const url = `${apiBase}/matchmake/joinById/puzzle_room`
return axios.post(url, data)
}
/**
* 发送一条问题
* @param {string} roomId
* @param data
* @return {Promise<AxiosResponse<any>>}
*/
export async function sendQuestion(roomId: string, data: any) {
console.log(`sendOneQuestion to ${roomId}, ${JSON.stringify(data)}`)
return broadcast(roomId, 'question', data)
}
/**
* 更新玩家的分数
* @param {string} roomId
* @param data
* @return {Promise<AxiosResponse<any>>}
*/
export async function updateScore(roomId: string, data: any) {
console.log(`updateScore: ${roomId}, ${JSON.stringify(data)}`)
const url = `${apiBase}/room/call`
const args = [data]
const params = {
roomId,
method: 'updateScore',
args: JSON.stringify(args)
}
return axios.post(url, params)
.then(res => {
return res.data
})
}
/**
* 更新游戏轮数
* @param {string} roomId
* @param {number} round
* @return {Promise<AxiosResponse<any>>}
*/
export async function updateRound(roomId: string, round: number) {
console.log(`updateRound: ${roomId}, ${round}`)
const url = `${apiBase}/room/call`
const args = [round]
const params = {
roomId,
method: 'updateRound',
args: JSON.stringify(args)
}
return axios.post(url, params)
.then(res => {
return res.data
})
}