javascript - 使用node.js + socket.io处理多用户数据

标签 javascript node.js socket.io

我一直在浏览这个网站和网络来寻找答案,但找不到真正令我满意的答案。

我计划为后端编写一个基于node.js + socket.io 的小型多人网页游戏。为了处理新用户,我编写了以下代码:

io.sockets.on('connection', function(socket)
{
    socket.emit('connected', {message: "you are connected!"});
    var player = new myGame();
}

myGame 是我自己的函数,包含游戏本身的许多变量(用户名、分数、金钱...)。我的问题是如何拥有一个使用所有玩家 myGame 对象的数据并更新它的游戏引擎?我正在考虑使用 myGame 对象的全局数组,但这意味着数据被复制两次(在套接字中和全局数组中)。

在 C/C++ 中,我会使用指针或引用,但 JS 是一种按值传递语言。有什么想法吗?

最佳答案

您可以创建映射到 username/socket.id 键的全局对象数组。您不一定必须将该数据存储在套接字中,对吗?每次发生事件时,获取socket.id和事件数据并将其发送到全局对象。从那里,使用全局对象和套接字 ID 将任何信息转发回套接字。这有望保留它,以便套接字上的内容与每个人看到的内容相同,因为它们都访问相同的数据。

关于javascript - 使用node.js + socket.io处理多用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873457/

相关文章:

javascript - React Native,使用 Flex Box 时遇到问题

Javascript函数的参数是单词 "Array"而不是mySQL行

javascript - 为什么要在这个 var 声明中将这个变量赋值给它自己?

node.js - Node 和 shebang : help executing via command line

javascript - 如何在 React JS 中加载页面时自动调用函数?(2020 年)

javascript - 对类似于 ng-if 的 Angular Directive(指令)进行单元测试

node.js - 我应该在嵌套的 Promise 上调用 .catch 吗?

javascript - 某些用户无法连接到 websocket

php - 检查时间戳然后 Redis 发布一个事件?

node.js - Hapi.js 和 Socket.io——socket.io.js 在哪里?