如何在Raspberry Pi上进行Socket.IO多线程?

问题描述 投票:0回答:1

我有一个监听套接字的socket.io服务器:

io.on('connection', (socket) => {
    socket.on('myEvent', function(data){
        socket.emit('eventReceived', { status: 1 });
    });
});

我知道 Node.js 和 Socket.IO 不能在多线程中工作,所以我想知道如何有效地处理多个客户端,同时发送 myEvent。

我读过一些有关集群的内容。只需在我的项目前面添加以下代码那么简单吗?

const cluster = require('cluster');
const os = require('os');
const socketIO = require('socket.io');

if (cluster.isMaster) {
  const numCPUs = os.cpus().length;
  console.log(`Master ${process.pid} is running`);

  // Fork workers
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
  });
} else {
  //my socket code
}

我还阅读了一些有关 Redis 的内容,在这种情况下它有何用处?它对树莓派有效吗?是否可以为每个用户创建一个新线程?

感谢您的帮助:)

node.js redis socket.io cluster-computing
1个回答
0
投票

据我所知,对 Node.js 进行集群应该可以有效地将工作负载分散到多个 CPU 核心之间。集群的代码片段是正确的,应该有助于解决任何可扩展性问题。我建议使用集群,因为我没有太多使用 Redis 的经验,但我确实知道它可以根据工作负载和资源提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.