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

architecture for modular socket.io in node.js

本文关键字:io 体系结构 socket 模块化 js node      更新时间:2023-09-26

在node.js应用程序中,假设我有一个类似的app.js

var express = require('express')
var app = express();
var server = http.createServer(app);
...
module.exports = {
  app:app,
  server:server
}

此外,还有/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;

在这里需要app.js中的server是一种好的做法吗?如果没有,还有什么更好的解决方案?thx

试着让sockets.js文件导出一个函数。然后在你的app.js中需要sockets文件,并传入任何相关的参数。

在您的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;
};

在你的app.js 中

var express = require("express");
var app = express();
var io = require("./lib/sockets")(app);