Запуск модуля кластера socketio и nodejs - PullRequest
0 голосов
/ 21 февраля 2019

Сервер

var cluster = require('cluster');

// Code to run if we're in the master process
if (cluster.isMaster) {

    // Count the machine's CPUs
    var cpuCount = require('os').cpus().length;

    // Create a worker for each CPU
    for (var i = 0; i < cpuCount; i += 1) {
        cluster.fork();
    }

    // Listen for terminating workers
    cluster.on('exit', function (worker) {

        // Replace the terminated workers
        console.log('Worker ' + worker.id + ' died :(');
        cluster.fork();

    });

// Code to run if we're in a worker process
}

else {
    const app = express();
    const server = require('http').createServer(app);

    const io = require('socket.io')(server);
    app.set('socketio', io);

    const port = process.env.PORT || 9090;

    server.listen(port,() => {
        console.log('Server running at http://127.0.0.1:' + port + '/');
    });
    io.on('connection', function (socket) {
      console.log("CONNECTED")
    });


}

Клиент

import io from 'socket.io-client'
    const socket = io('http://localhost:9090');
    socket.on('notification', (data) => {
      if(props.user && data.user._id === props.user._id) {
        this.setNotification(data.notification);
      }
    })

сообщение об ошибке http://localhost:9090/socket.io/?EIO=3&transport=polling&t=MaDRz1u&sid=VzBUqt22usNbdqKCAAAb 400 (неверный запрос)

Когда я удаляю if else и сохраняюкод, который в выражении else все работает.Что мне нужно добавить, чтобы идентификатор сеанса не был неизвестен.

Объект ответа: {"code": 1, "message": "Идентификатор сеанса неизвестен"}

1 Ответ

0 голосов
/ 21 февраля 2019

Это происходит потому, что каждый дочерний процесс, созданный кластерами, не синхронизирован и не знает друг друга.Для преодоления этого вам понадобится адаптер для связи между кластерами.

Обратитесь к документации Socket.io , чтобы решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...