NodeJS集群如何在工作人员之间共享对象数组

所以我build立了一个简单的nodejs集群游戏,我是nodejs的新手。 基本上玩家使用socket.io连接到我的工作人员,然后创build一个Player对象,然后添加到我的PlayerManager.LIST数组。 现在,这引起我一些问题,因为PlayerManager.LIST在每个工作人员,并没有同步。

所以我的问题是,是否有更好的方法来做到这一点,如果我连接到工人2,我看到工人1的相同的球员列表。

目前的结构:

app.js -> worker ->-> PlayerManager (Contains List) ->->-> Player 

Git Repo: https : //github.com/mrhid6/game_app_v2

       

网上收集的解决方案 "NodeJS集群如何在工作人员之间共享对象数组"

NodeJS集群基于Nodejssubprocess。 在subprocess中,可以通过IPC通道上的消息在父进程(集群中的主进程)和subprocess(集群中的工作进程)之间发送数据。 您可以使用消息事件对群集执行相同的操作

 var cluster = require('cluster'); var _ = require('lodash'); var http = require('http'); var workers = []; var workerCount = 4; if (cluster.isMaster) { for (var i = 0; i < workerCount; i++) { var worker = cluster.fork(); worker.on('message', function(msg) { if (msg.task === 'sync') { syncPlayerList(msg.data); } }); } workers.push[worker]; } else { var worker = new Worker(); process.on('message', function(msg) { if (msg.task === 'sync') { worker.playerList = msg.data; } }); } function syncPlayerList (playerList) { _.forEach(workers, function (worker) { worker.send({ task: 'sync', data: playerList }); }); }; // worker class function Worker() { this.playerList = []; } Worker.prototype.sendSyncEvent = function () { process.send({ task: 'sync', data: this.playerList }) };