Ngnix+node.js+express+socket.io 配置websocket 集群

本文介绍如何使用Node.js v7.8.0、PM2 v2.6.1和Nginx v1.10.2部署并配置集群应用,通过Socket.IO实现客户端与服务器之间的实时通信。详细讲解了端口分配、Nginx负载均衡配置及Socket.IO的客户端和服务端代码实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.先说各组件版本

  node:v7.8.0
  pm2:2.6.1
  nginx version: nginx/1.10.2
  "socket.io": "^2.0.3",  
  "express": "^4.15.4"

2.修改bin/www,设置4个端口号

 var port = normalizePort(process.env.PORT || '58686');
if(process.env.NODE_APP_INSTANCE)
{
  port = port + parseInt(process.env.NODE_APP_INSTANCE);
}
app.set('port', port);
如果PM2 开启了四个cluster ,那么node就开启了四个进程
如我的centos 服务器显示的 PID 和 PPID 如下
18848  2901 
18854  2901
18870  2901
18871  2901
端口号为 58686,58687,58688,58689。顺序跟进程ID不一定一致

3.配置nginx ip_hash

upstream io_nodes {
      ip_hash;
      server 127.0.0.1:58686;
      server 127.0.0.1:58687;
      server 127.0.0.1:58688;
      server 127.0.0.1:58689;
    }
server{
        listen 80;
        server_name 这里是域名;
        location /{
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://io_nodes;
        }
}

4.socket.io Client 端例子

<script type="application/javascript" src="socket.io/socket.io.js"></script>
<script type="text/javascript">
    var socket = io.connect('http://progress.iotchain.io');
    socket.on('data', function (data) {
        reMea(data);
    });
</script>

5.socket.io Server 端例子

var server = http.createServer(app);

var io = require('socket.io')(server);

io.sockets.on('connection', function (socket) {
    socket.emit('data', db.read());
    socket.on('update',function (data) {
        db.write(data,function () {
            io.sockets.emit('data', db.read());
        });
    })
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值