我正在为一个必须制作多人战舰游戏的项目工作,我已经完成了大多数游戏逻辑(客户端为Angular 6,服务器端为node.js + express),但是由于我是socket.io的新手,因此我目前对此颇为棘手,我设法做到这一点来尝试连接2个播放器:
var waitingPlayer = null;
ios.on('connection', (socket) => {
console.log('new user connected');
if (waitingPlayer == null) {
waitingPlayer = socket;
waitingPlayer.emit('waitingOpponent', {
text: "waiting for an opponent"
});
} else {
console.log('Match Found');
waitingPlayer.emit('matchFound', {
text: "Match Found",
});
socket.emit('matchFound', {
text: "Match Found"
});
}
});
如果我尝试这样做,似乎可以将2个以上的用户连接在一起,是否有办法在将要玩同一游戏的2个用户之间建立某种游说方式,然后为将要连接的用户提供更多的游说方式后?我已经查阅了一些文档,但是找不到很多。
答案 0 :(得分:1)
使用带有Socket IO的Room听起来不错。您可以动态创建房间,而Socket IO基本上可以为您管理房间。因此,您可以为每个单独的“战斗”或游戏创建一个房间。将两个用户放在该游戏室中。之后,您可以专门广播到那个房间。您将需要以某种方式跟踪房间,但这应该为您提供一个起点。也许如果发生的每个游戏都有其自己的唯一ID,则房间名称可以是该ID。然后,您可以在需要时广播到该特定房间ID。
加入:
var gameId = "game_1234";
io.on('connection', function(socket){
socket.join(gameId);
});
发射:
io.to(gameId).emit('some event');