node.js中模块化socket.io的体系结构

Hin*_*ich 2 javascript module node.js npm socket.io

在node.js的应用程序,比方说,我有一个app.js这样

var express = require('express')
var app = express();

var server = http.createServer(app);

...

module.exports = {
  app:app,
  server:server
}
Run Code Online (Sandbox Code Playgroud)

还有/lib/sockets.js,其中socket.io的所有逻辑都应该进入.它看起来像这样:

var server = require('../app.js').server;
var io = require("socket.io").listen(server);

io.sockets.on('connection', function(socket) {
  socket.on('event', function(msg) {
    socket.emit('news', msg});
  });
});

module.exports = io;
Run Code Online (Sandbox Code Playgroud)

它是需要的很好的做法serverapp.js这里?如果没有,什么是更好的解决方案?谢谢

aem*_*bke 7

尝试让你的sockets.js文件导出一个函数.然后需要app.js中的套接字文件并传入任何相关参数.

在你的lib/sockets.js中:

module.exports = function(server){

    var io = require("socket.io").listen(server);

    io.sockets.on('connection', function(socket) {
        socket.on('event', function(msg) {
            socket.emit('news', msg);
        });
    });

    return io;
};
Run Code Online (Sandbox Code Playgroud)

在你的app.js

var express = require("express");
var app = express();

var io = require("./lib/sockets")(app);
Run Code Online (Sandbox Code Playgroud)