请 有人可以告诉我如何解决这个问题
在我的客户端上使用react.js 我连接到插座并发送了一个播放器:
componentDidMount() {
// io() not io.connect()
this.socket = io('http://localhost:9000');
const player =
{ id: 20, name: 'spt', mmr: 1000 }
this.socket.emit('addPlayer-Queue', player);
this.socket.on('match', (result) => {
});
this.socket.open();
}
然后在我的后端,我尝试为他找到一个对手,条件是该玩家的MMR小于或等于5%:
socket.on('addPlayer-Queue', (player) => {
console.log(player);
queue.addPlayer(player)
const makeMatch = queue.searching(player.id);
console.log(makeMatch);
socket.emit('match', makeMatch)
});
然后我进行搜索,如果我找到一个对手,我会将他放回我的插座 否则我返回null
searching(id) {
const firstPLayer = this.players.find(p => p.id == id)
const { mmr } = firstPLayer
const secondPlayer = this.players.find((playerTwo) => playerTwo.mmr < (5 / 100) * mmr + mmr && playerTwo.mmr > mmr - ((5 / 100) * mmr) && playerTwo.id != firstPLayer.id);
if(!secondPlayer){
return null;
}
const matchedPlayers = [
firstPLayer,
secondPlayer
]
// remove matched players from this.players
this.removePlayers(matchedPlayers);
// return new Match with matched players
return matchedPlayers;
}
// remove matched players from this.players
this.removePlayers(matchedPlayers);
// return new Match with matched players
return matchedPlayers;}
我试图做一个循环逻辑来寻找一名球员,直到符合我的条件为止。
但是javascript不允许我这样做,因为我正在循环 我将无法将新玩家添加到队列中 然后将是一个永恒的循环
所以我想 有可能在前端提出解决方案吗?
那是我从活动中回来的比赛 为空
是否有可能再次调用后端并再次运行验证?
我不再知道该怎么办:(
编辑*:
我认为的另一种可能性(创建一个检查队列长度的事件,并且每当发生变化时,我都会尝试为玩家寻找对手)
请有人给我个灯