我有点困惑。我socket.io在NodeJS服务器上使用www.example.com,使用了一个简单的:
const server = http.createServer(app);
const io = socketIo();
io.attach(server);
io.adapter(redisAdapter(process.env.REDISCLOUD_URL));
server.listen(3000)
现在我使用PM2集群选项集群了我的服务器进程。
我的nginx配置如下所示:
location / {
proxy_pass http://localhost:5030;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
我是否还应该添加websocket
传输,而不是普通的http轮询?
const server = http.createServer(app);
const io = socketIo();
io.attach(server, {
transports: [ 'websocket' ]
});
io.adapter(redisAdapter(process.env.REDISCLOUD_URL));
server.listen(3000)
在socket.io网站中,他们建议而不是,他们建议使用nginx.conf
文件中的upstream
在节点之间平衡负载,并使用粘性会话,如下所示:
upstream nodes {
# enable sticky session based on IP
ip_hash;
server app01:3000;
server app02:3000;
server app03:3000;
}
但是我没有app01
、app02
和app03
。我有PM2进程,但它们都驻留在同一个localhost:5030
地址上。那么,我是否只能选择启用websocket
传输,而放弃长轮询的回退选项?
1条答案
按热度按时间7z5jn7bk1#
您需要使用nginx作为负载平衡器,并切换到fork模式,当然,您将使用不同的端口群集模式,我们需要另一种解决方案