Socket.io和多维数组
Socket.io and multi dimensional arrays?
我目前正在玩一个简单的游戏,用户首先连接并输入用户名,然后将其存储起来。
所以问题是我有一个多维数组。但是,当第二个玩家连接时,它怎么会知道呢?我需要创建其中两个吗?如果是这样,它怎么知道该往哪里推?
由于我需要找到长度,所以我可以看到有两个用户。
var socketStorage = {};
// ===============================================
// GAME LOGIC
// ===============================================
socketStorage[socket.id] = {};
socketStorage[socket.id] = {
username : "username",
socket : socket,
currQuestion : {
answered : false,
answer : false
},
allQuestionsAnswers : []
};
socket.on("setusername", function(msg){
socketStorage[socket.id].username = msg.username;
console.log(socketStorage[socket.id].username);
});
您的示例中没有多维数组。你也没有在游戏中解释——是每个人都在同一时间一起玩,还是有不同的游戏可以各自包含自己的玩家,彼此隔离?
这里有一个处理此问题的示例方法:我已经有一段时间没有使用套接字了,所以我正在使用您的代码和我对如何处理它的粗略记忆——根据需要更正任何错误。
var games = []
var socketStorage = {};
// ===============================================
// GAME LOGIC
// ===============================================
// socketStorage[socket.id] = {}; // <- this line is unnecessary.
socketStorage[socket.id] = {
username : "username",
socket : socket,
currQuestion : {
answered : false,
answer : false
},
allQuestionsAnswers : []
};
socket.on("setusername", function(msg){
socketStorage[socket.id].username = msg.username;
console.log(socketStorage[socket.id].username);
});
socket.on("newgame", function(msg){
newGameId = games.length;
games.push([]);
games[gameId].push(socketStorage[socket.id]);
socket.emit("newgamecreated", { gameId: newGameId });
});
socket.on("joingame", function(msg){
var gameId = msg.gameNumber;
games[gameId].push(socketStorage[socket.id]);
});
socket.on("getgames", function(msg){
gamesToUsers = {};
games.forEach(function(game, index) {
gamesToUsers[index] = game.map(function(socket) {
return socket.username
});
});
socket.emit("currentgames", gamesToUsers);
});
这是不完整的,而且非常基本,可能有几个错误,但应该让你足够了解如何进行这项工作的概念。每当有人在游戏中做某事时,你只想使用一个循环将新信息socket.emit
发送给同一游戏中的每个人。所以,
socket.on("somethinghappenedingame", function(msg){
game = msg.gameNumber;
update = msg.update;
games[game].forEach(function(socketObj){
socketObj.socket.emit("gameUpdate", update);
});
});
希望能有所帮助。
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- 正在发送请求中包含数组的qx.io.request.Xhr请求
- 是socket.io异步的-我需要锁定全局数组/变量吗
- Javascript数组数据(在套接字IO应用程序中)
- 套接字.IO将数组传递给客户端
- Node.js和Socket.以块形式接收的IO数组
- Socket.io和多维数组