Javascript Socket io多人游戏基础设施
我正在尝试用socket.io做一个多人游戏应用程序。当播放器连接时,我希望首先发送一条“登录”消息。我初始化player变量以供进一步使用。 其他消息稍后使用player变量 如何确保客户端在发出其他请求之前发送了“登录”消息。Javascript Socket io多人游戏基础设施,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,我正在尝试用socket.io做一个多人游戏应用程序。当播放器连接时,我希望首先发送一条“登录”消息。我初始化player变量以供进一步使用。 其他消息稍后使用player变量 如何确保客户端在发出其他请求之前发送了“登录”消息。 我可以在需要player的每个请求上检查player是否为null,但这看起来很难看。您可以从登录侦听器中安装其他侦听器: var connectionHandler = function(socket) { var player = null; socket.on
我可以在需要player的每个请求上检查player是否为null,但这看起来很难看。您可以从
登录
侦听器中安装其他侦听器:
var connectionHandler = function(socket) {
var player = null;
socket.on('login', function(data) {
player = {
data: okeyServer.playerJoin(data),
socket: socket
};
socket.emit('welcome');
});
socket.on('info server', function(data) {
var info = okeyServer.Info();
socket.emit('info server', info);
});
socket.on('join game', function (data) {
var gameid = data.gameid;
var side = data.side;
okeyServer.playerJoinGame(player, gameid, side);
});
socket.on('disconnect', function () {
okeyServer.playerLeave(player);
io.sockets.emit('player leave', player);
});
}
这假设在连接的生命周期内,客户端只发出一次登录
消息。如果不是这样,你需要做一些改变
var connectionHandler = function(socket) {
var player = null;
socket.on('login', function(data) {
// If we already have a player, just return a `welcome` message.
if (player !== null) {
return socket.emit('welcome');
}
// Store player.
player = {
data: okeyServer.playerJoin(data),
socket: socket
};
// Emit welcome message.
socket.emit('welcome');
// Set up the rest of the listeners.
socket.on('info server', function(data) {
var info = okeyServer.Info();
socket.emit('info server', info);
});
socket.on('join game', function (data) {
var gameid = data.gameid;
var side = data.side;
okeyServer.playerJoinGame(player, gameid, side);
});
socket.on('disconnect', function () {
okeyServer.playerLeave(player);
io.sockets.emit('player leave', player);
});
});
};