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

How to share an array state between modules in Node?

本文关键字:共享 数组 状态 之间 模块 Node      更新时间:2023-09-26

我正在尝试用Node和Socket.io构建一个简单的游戏。我保存了一个连接的玩家数组。

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

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

我想我会简单地传递connectedPlayers到模块,像这样:

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

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

我读到不使用全局变量。

我怎么能保持连接的球员和模块之间共享它的状态数组?

我是Node新手,但也许我能帮上忙。

你可能想看看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');