2017-04-27 88 views
0

我遇到了将当前数据发送到新套接字连接的问题。我有当前代码server.js文件:如何将路由变量传递给server.js

server.js:

// Importing and initializing npm/node plugins 
var app = require('express')(); 
var server = require('http').createServer(app); 

// Import config settings 
var config = require('./config.js'); 

// Create socket server and allow connections from certain ip 
var io = require('socket.io')(server); 
io.set('origins', 'http://' + config.url + ':' + config.client_http_port); 


app.use(require('./routes/index.js')); 


// Create mongoDB connection 
mongoose.Promise = global.Promise; 
mongoose.connect('mongodb://' + config.url + '/' + config.database_name); 

// Inform new socket connections 
io.on('connection', function (socket) { 
    console.log('Client connected!'); 
    setTimeout(function() { 
     // socket.emit('variable comes here'); <------------ 
    }, 3000); 
}); 

// Open server in port 
server.listen(config.server_port, function() { 
    console.log('Server listening on port: ' + config.server_port); 
}); 

module.exports = app; 

在我index.js路线我有,我想传递给server.js并从那里到一个变量新的套接字连接。我怎么能从路由index.js的变量导入到服务器文件server.js?

index.js:

// Importing and initializing npm/node plugins 
var express = require('express'); 
var router = express.Router(); 

var data = {test:'data123'}; // <--------- this one 

module.exports = router; 

回答

0

您可以在index.js出口routerdata变量:

module.exports.router = router; 
module.exports.data = data; 

然后在server.js导入datarouter这样的:

var router = require('./routes/index.js').router; 
var data = require('./routes/index.js').data; 

app.use(router); //instead of app.use(require('./routes/index.js')); 
1

如果哟乌尔数据对象是静态的,那么你可以在index.js它导出和如果产生数据对象或获取(异步)在server.js

导入它,那么你必须创建一个从server.js调用,并返回data值getter函数。但请注意,数据可能是undefined,所以在获取对象后请检查。

动态数据的另一个解决方案是创建获取数据异步的函数,然后调用您提供的回调server.js