如何在Node中的模块之间共享数组状态?

时间:2014-03-15 18:21:18

标签: javascript node.js sockets socket.io

我正在尝试使用Node和Socket.io构建一个简单的游戏。我保留了一系列连接的玩家。

在连接时我添加了一个播放器,断开连接后将其删除。很简单。我的主文件中包含了所有套接字事件,如果需要,任何套接字事件都可以访问该数组。

当我想从文件中删除套接字事件并将它们放在单独的模块中时产生的问题。

我以为我会简单地将connectedPlayers传递给模块:

require('./app_modules/socket-messages.js')(io, db, _, connectedPlayers); 

但是它不起作用,模块被兑现,它不会共享数组的状态。如果我理解正确的话。

我读过不使用全局变量。

如何保留一组连接的播放器并在模块之间共享它的状态?

1 个答案:

答案 0 :(得分:1)

我自己节点新手,但也许我可以帮忙。

您可能希望在节点docs处查看module.exports

您可以选择要导出的内容,它可以是函数,也可以只是变量,也许在这种情况下,我们会说您只想返回您的connectedPlayers数组,并且它位于名为currentPlayers.js的文件中。

currentPlayers.js

我将导出数组:

var connectPlayers = ["Ray", "Jason", "Kingtak", "Derek", "Tyler"];
//some code then somewhere appropriate
module.exports = connectedPlayers;

然后我需要添加的信息

var ConnectedPlayers = require('./path/to/file/currentPlayers');