Идея состоит в том, чтобы создать сервер в главном процессе и обрабатывать запросы в рабочих.Я хочу использовать все ядра ЦП и иметь своего рода баланс нагрузки.
Сначала я попытался отправить обработчик сервера от мастера к работнику:
var cluster = require('cluster');
if (cluster.isMaster) {
var app = require('express').createServer();
app.listen(1234);
var worker = cluster.fork();
worker.stdin.write('fd', 'utf8', app._handle);
} else {
process.stdin.resume();
process.stdin.on('fd', function(fd){
var stream = require('net').Stream(fd);
var io = require('socket.io').listen(stream);
io.sockets.on('connection', function(socket){
...
}
}
}
, но запись не началась('fd' ...) обработчик события в работнике.Затем я ставлю все мастеру, чтобы проверить, возможно ли это вообще:
var app = require('express').createServer();
app.listen(1234);
var stream = require('net').Stream(app._handler);
var io = require('socket.io').listen(stream);
сервер запускается без ошибок, но не работает.Я не могу событие запросить скрипт socket.io.js со стороны клиента с тегом:
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
Response: Cannot GET /socket.io/socket.io.js
Поэтому у меня две проблемы:
- Как отправить дескриптор открытого сокета нарабочий?
- Как настроить обработчик для сервера по этому дескриптору?