如何使用 Socket.io 和 Express 进行集群

Posted

技术标签:

【中文标题】如何使用 Socket.io 和 Express 进行集群【英文标题】:How to use Clustering with Socket.io and Express 【发布时间】:2018-04-04 00:15:29 【问题描述】:

我将 express 与 socket.io 一起使用,并将 express-session 与 express-socket.io-session 一起使用,这有助于我将会话连接到我的套接字实例。

这是我用于聚类的代码

var cluster = require('cluster')

if(cluster.isMaster) 
    // imports
    const http = require('http'),
        socketIO = require('socket.io')

    var server = http.createServer(),
        io = socketIO(server)

    for (var i = 0; i < 3; i++) 
        cluster.fork()
    

    cluster.on('exit', function(worker, code, signal) 
        console.log('worker ' + worker.process.pid + ' died code: ' + code + 'signal: '+ signal)
    )



if(cluster.isWorker) 
    var express = require('express'),
        app = express(),
        deploy = require('./main.js'),
        server = require('http').createServer(app),
        io = require('socket.io').listen(server)

        // add store here.

        // deploy and listen
    deploy(app, io)

    console.log(cluster.worker.id)
    app.listen(8080)

部署函数运行会话、路由等内容。

POST http://localhost:8080/socket.io/?EIO=3&transport=polling&t=Lz9Ey8p 404(未找到)

【问题讨论】:

【参考方案1】:

我找到了答案,但我会将其公开,以便将来如果有人遇到此问题,他们可以立即快速设置。

需要使用sticky cluster,参考this config for Express。

【讨论】:

以上是关于如何使用 Socket.io 和 Express 进行集群的主要内容,如果未能解决你的问题,请参考以下文章

如何在 express 和 socket.io 中使用护照?

如何在同一个端口上运行 express 和 socket.io

如何使用 socket io 和 node express 发送个人消息

如何结合 Express.JS 使用 Socket.io(使用 Express 应用程序生成器)

如何使用socket.io mysql nodejs express删除帖子

在 node.js 中,如何使用 socket.io 和 express 设置 redis?具体使用 RedisStore()