我遇到将当前数据发送到新套接字连接的问题。我有一个带有当前代码的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 :(得分:1)
如果您的数据对象是静态的,那么您可以将其导出到index.js
并将其导入server.js
如果生成或获取数据对象(异步),则必须创建从server.js
调用并返回data
值的getter函数。但请注意,数据可能是undefined
,因此在获取对象后请检查。
动态数据的另一个解决方案是创建获取数据异步的函数,然后调用server.js
中提供的回调,
答案 1 :(得分:0)
您可以在index.js中导出router
和data
变量:
module.exports.router = router;
module.exports.data = data;
然后在server.js中导入data
和router
,如下所示:
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'));