分类: 其它

使用 PM2 集群 Express/Socket.io 服务器

使用PM2来运行你的服务器守护程序的一个好处是它有内置的负载均衡,可以通过 -i 来轻松启用

如果你不熟悉的话负载均衡是什么的话,简单来说就是将服务器负载发送到集群中运行的应用程序的不同实例的过程

这使你能够更好地利用多核心的CPU,将传入的请求以一种平衡的方式发送到每个实例

不过当你要运行一个像websocket这样的有状态的连接时,配置起来会稍微又些麻烦

socket.io需要利用redis这样的快速的键值存储来保持跨服务器实例的连接

安装socket.io-redis适配器(adapter)

yarn add socket.io-redis

修改服务端代码

const sockets = require('socket.io')
const redis = require('socket.io-redis')
const bindListeners = (io) => {
  io.on('connection', (socket) => {
    console.log(`${socket.id} connected`)
  })
}

module.exports = (server) => {
  const io = sockets(server, {
    transports: [ 'websocket', 'polling' ]
  })
  // Add the redis adapter
  io.adapter(redis({ host: 'localhost', port: 6379 }))   
  bindListeners(io)
}

客户端

const socket = io.connnect({
  transports: [ 'websocket', 'polling' ]
})

接下来,运行服务即可

pm2 start server -i max

看起来圆滚滚的方糖

最近的文章

无HKID激活Stripe香港个人账号

前言 朋友意外的在Github…

7月 之前

大疆V2 fpv眼镜wtfos moonlight串流教程

大家用过大疆V2眼镜的肯定都知…

2年 之前

大疆V2眼镜同时使用O3系统和wtfos

最近新入了O3的圈圈机,但是发…

2年 之前

通过Github Actions实现Hexo的持续集成

最近有开发一个Hexo的博客主…

2年 之前

This website uses cookies.