HTML5 キャンバスでの共同描画用の Node.js アプリケーションを作成しています。通信に Socket.IO を使用しており、クラスタリングを実装しているため、アプリケーションをスケーリングできます。私の講師は、クラスタリングを使用するのは良いアイデアだと言いましたが、CPU のすべてのコアに同じことをさせるのは賢明ではありません。つまり、目的に反します。したがって、私の場合、まったく同じペインティングで 8 つのコアを使用するのは賢明ではありませんが、代わりに 8 つの異なるペインティング (コアごとに 1 つのペインティング) を使用することもできます。また、Socket.IO は 1 つのコアを介してのみ通信することも知っています。今、私はどこから、どのように始めるべきかについて少し混乱しています。この「粘着性のある」socket.ioモジュールがあることは知っていますが、それは通信を共有するだけで、コアごとに異なる絵を作成しませんか?
これが私が作ったサーバーです:
let http = require('http').Server(application);
let socketIO = require('socket.io')(http);
let cluster = require('cluster');
let cores= require('os').cpus().length;
if (cluster.isMaster) {
for (let i = 0; i < cores; i++) {
cluster.fork();
}
} else {
process.exit();
}
function connect(socket){
socket.on('test',
function emit(data) {
socket.broadcast.emit('test', data);
});
}
socketIO.on('connection', connect);
http.listen(port);