Добавление Socket.io на сервер Express 4 - настройка нескольких файлов
Я прыгал туда-сюда между socket.io и express.io - но остановился на socket.io в Express 4, так как хотел бы использовать пространства имен.
Я работал над некоторыми примерами использования Express 4 Server с использованием Socket.io - но большинство примеров основаны на одном файле со всем в нем. Я пытаюсь отделить весь мой код, чтобы сделать его проще, но я не знаю, как добавить Socket.io (или где).
У меня есть index.js, который использует кластер и в основном вызывает server.js:
var server = require( "./server.js" );
var cluster = require('cluster');
var webApp={
run: function(){
console.log('Starting: Server');
server.listen();
}
};
if(cluster.isMaster){
cluster.fork();
cluster.on('exit',function(worker){
console.log('Worker ' + worker.id + ' died..');
setTimeout( function () { cluster.fork(); }, 1000 );
});
} else{
try {
webApp.run();
}
catch(e)
{
console.log(e);
process.exit(1);
}
process.on('uncaughtException', function(err){
console.log(err);
process.exit(1);
});
process.on( 'SIGINT', function () {
console.log( "\n SIGINT (Crtl-C)" );
//Kill worker
cluster.disconnect();
process.exit(1);
});
}
Затем он вызывает файл server.js:
var path = require('path');
var express = require('express');
var bodyParser = require('body-parser');
var config = require('./config/config.js');
var router = require('./routes');
var Server = Object.subClass({
/**
* Constructor
*/
init:function(){
this.appServer = express();
var that = this;
var appServer = this.appServer;
appServer.use(express.static(__dirname + '/public'));
appServer.set('views', path.join(__dirname, 'views'));
appServer.set('view engine', 'ejs');
appServer.use(bodyParser.urlencoded({ extended: true }));
appServer.use(bodyParser.json());
appServer.get('/',router.root);
},
/**
* Listener HTTP
*/
listen:function(){
var port = config.rest.port;
console.log(':: on port:' + port);
this.appServer.listen(port);
}
});
module.exports = new Server();
У меня есть только один "маршрут", который является "/" и определен в файле rout.js. Страница загружается нормально, но куда мне добавить сокет server.io? и я добавить какие-либо определения пространства имен socket.io в файле rout.js или в JavaScript загружаемой страницы?
Есть так много способов использования сокетов, что я не могу найти лучший подход для моего многофайлового подхода.
Любая помощь была бы блестящей, поскольку я, кажется, иду по кругу.
Наслаждайтесь нашей субботой:)
Еще раз спасибо.
1 ответ
Я провел утро, рассматривая подход "Кластер / работник", и решил использовать "SocketCluster", поскольку он, кажется, делает то, что мне нужно.
Приятного воскресенья