在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
是一种好习惯吗?如果没有,什么是更好的解决方案?谢谢 最佳答案
尝试让您的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;
};
并在您的app.js中
var express = require("express");
var app = express();
var io = require("./lib/sockets")(app);