簡體   English   中英

將Socket.io添加到Express 4服務器-多個文件設置

[英]Adding Socket.io to an Express 4 Server - multiple file setup

我一直在socket.io和express.io之間來回跳動-但我想使用命名空間來與Express 4一起使用socket.io。

我已經研究了一些使用Socket.io的Express 4 Server的示例-但是大多數示例都是基於其中包含所有內容的一個文件。 我試圖分離所有代碼以使其變得更容易,但是我對如何添加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();

我只有一個“ route”,即“ /”,並且在routes.js文件中定義。 該頁面加載正常,但是我應在哪里添加服務器端socket.io? 並在route.js文件或正在加載的頁面的javascript中添加任何socket.io名稱空間定義嗎?

使用套接字的方法有很多,我似乎無法為我的多文件方法制定出最佳方法。

正如我似乎在圈子里一樣,任何幫助都將是很棒的。

享受我們的星期六:)

再次感謝。

我花了整整一天的時間研究集群/工作人員方法,並決定使用“ SocketCluster”,因為它似乎可以滿足我的需求。

享受你的周日

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM