如何从节点服务器向angularjs发出消息?

时间:2017-07-11 20:03:22

标签: angularjs node.js rest

我的应用程序遇到了一个问题。 玩家正在连接游戏。接下来,他选择一个远程玩家,然后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');
	}
	
});

0 个答案:

没有答案