我的应用程序遇到了一个问题。 玩家正在连接游戏。接下来,他选择一个远程玩家,然后angularjs通过restapi发送有关此玩家的nodejs信息并检查任何等待的游戏。如果当前没有正在等待的游戏 - 玩家等待其他玩家。如果他来了,有同样的情况,但是节点正在将一个游戏对象返回到新玩家,但是如何发出/广播任何信息以唤醒第一个玩家,谁在等待?
我尝试了角度承诺,但是当另一个玩家连接时,我不知道如何触发从节点到角度承诺的任何数据......
这是我的app.js
mySessionData.$promise.then(function(sessionData){
rpsManager.setMySessionId(sessionData.sessionID);
var gamePlay = $resource("/game/nick/:nick/item/:item/sessionid/:sessionid", {nick: '@nick', item: '@item', sessionid: '@sessionid'});
var gameData = gamePlay.save({
nick: rpsManager.getPlayerNick(),
item: rpsManager.getPlayerItem(),
sessionid: rpsManager.getMySessionId()
});
gameData.$promise.then(
function (result) {
if (result.gameId != undefined && result.nick != undefined && result.item != undefined) {
rpsManager.setPlayerEnemyData({gameId: result.gameId, nick: result.nick, item: result.item});
console.log('result: ', result);
TweenMax.to($('.rps_select_player'), 0.8, {css: {transform: "translateY(-100vh)"}, ease:Power2.easeOut, onComplete: function(){
scope.$emit('stateChange', 5);
}}).delay(2);
}
},
function (error) {
console.log(error);
},
function (progress) {
console.log(progress);
});
});
这是我的节点js:
app.all('/game/getsession', function(req, res){
var sessionID = req.sessionID;
res.send({sessionID: sessionID});
});
app.all('/game/nick/:nick/item/:item/sessionid/:sessionid', function (req, res) {
var sessionID = req.params.sessionid;
var gameToPlay = _checkForWaitingGames(sessionID, req, gamesAwaiting);
if (gameToPlay) {
res.send(gameToPlay);
} else {
console.log(gameToPlay);
console.log('Currently no games... waiting for players');
}
});