2012-05-23 248 views
2

请大家帮忙。我正在使用nodejs集群模块:http://nodejs.org/docs/v0.6.18/api/cluster.html。我有以下代码:Node.js集群模块

run.js

var cluster = require('cluster'); 

if (cluster.isMaster) { 
    require('os').cpus().forEach(function() { 
     cluster.fork(); 
    }); 
} else { 
    require('./worker.js'); 
} 

worker.js

var http = require('http'), 
    connect = require('connect'), 
    sio = require('socket.io'), 
    // create server 
    app = connect(), 
    server = http.createServer(app); 

server.listenPort(80); 

var io = sio.listen(server); 
// io.sockets.on .... 

所有工人听80端口。每个连接都为随机工作人员(?)提供服务。我可以切换用户连接的工作人员吗?

对不起我的英文不好

回答

1

如果你真的需要进行切换,你可以使用插座/ socket.io和你的集群之间的通信发送左右你的工作。

否则,你不能。但只是好奇 - 你为什么想要?

+0

我创建的游戏没有工​​人之间的沟通,所有数据保存在内存中的js对象。现在,我想用群集模块启动一些工作人员,但如果两个用户连接到不同的工作人员,他不能一起玩。 我知道,我可以在worker中使用'process.send',在master process中使用'worker.on',但切换用户worker对我来说更简单快捷。 – skyman

+0

也许你不应该在你的游戏中使用集群,然后 – ControlAltDel

+0

也许,但没有它,我不能使用多个CPU核心,难过 – skyman

0

你应该看看WebRTC,它可以启用点对点连接,这对于多人游戏来说非常有用。

我的2美分。