我一直在socket.io和express.io之間來回跳動 - 但是使用Express 4解決了socket.io問題,因爲我想使用命名空間。將Socket.io添加到Express 4服務器 - 多個文件設置
我已經開發了一些使用Socket.io的Express 4服務器的示例 - 但大多數示例都基於一個文件,其中包含所有內容。我試圖分離所有的代碼以使它更容易,但是我對如何添加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();
我只是有一個 '路徑' ,這是'/',並在routes.js文件中定義。頁面加載正常,但我在哪裏添加服務器端socket.io?並且在routes.js文件或正在加載的頁面的javascript中添加任何socket.io命名空間定義?
有很多使用套接字的方式,我似乎無法爲我的多文件方法找出最佳方法。
任何幫助將是輝煌的,因爲我似乎在圈子裏。
再次享受我們週六:)
感謝。
對不起,但我不明白你問的是什麼問題?你只是想弄清楚如何將你的代碼分成多個文件?還是有更多的問題涉及到這個問題?而且,你的socket.io代碼在哪裏?我在啓動我的服務器的'app.listen()'調用之後立即執行了我的操作。 – jfriend00 2014-10-04 16:54:03
嗨。基本上是的。我想了解如何將socket.io代碼添加或包裝到我所擁有的。我已經看到了很多實現套接字的方式,我不確定使用哪種樣式或方法。你會在一個單獨的文件中有你的套接字的文件名稱空間等文件?有了路線?謝謝 – Pandafinity 2014-10-04 20:01:37
如果你有一段可重複使用的代碼,並且可能在其他項目中使用,或者如果你有足夠大的相關代碼,將它分解成它自己的文件是有意義的,你應該創建一個新文件。 'socket.io'在這方面不會產生獨特的問題。 – jfriend00 2014-10-04 20:17:21