【问题标题】:Node.js: require() and passing variablesNode.js:require() 和传递变量
【发布时间】:2015-11-26 04:51:10
【问题描述】:

使用 npm 启动了一个项目,该项目创建了特定的文件结构:

www

app.js

现在,我想使用 sockets.io。在我的“www”文件中,这里有一个代码 sn-p:

var app = require('../app'); ... var server = http.createServer(app);

我想将我所有的服务器端套接字侦听器放在 app.js 中,但是下面的代码:

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

需要服务器作为输入。如何使我在“www”中实例化的服务器在“app.js”中可访问?

【问题讨论】:

  • 你的应用的入口点是什么?好像是www 那么为什么不把你的var io 放在那个文件里呢?

标签: javascript node.js sockets


【解决方案1】:

这似乎有点奇怪。但是,如果您坚持这样的结构,那么您可以从www 导出一个对象,该对象将具有app 作为它的属性和一个绑定套接字侦听器并接收app 对象作为参数的方法。

module.exports = {
    app:  app,
    bindSocketListeners: function(server, io) {
        io.listen(server);
        return io; 
    } 
};

并称它为:

var appObj = require('../app');
var io = require('socket.io');
var app = appObj.app;
var server = http.createServer(app);
io  = appObj.bindSocketListeners(server, io) 

【讨论】:

  • 谢谢,有帮助。为什么说这很奇怪?除非我希望在我的 www 文件中为我的整个应用程序提供一百万个侦听器,否则在这些相应页面中只为每个服务页面设置套接字侦听器会更有意义,此时我必须传递相同的 io 变量,它有绑定到同一台服务器。常见的做法是什么?
  • 我可能错了,但对我来说,在一个通用文件中用于应用程序处理和服务器创建以及另一个用于应用程序配置(用于设置中间件、路由、套接字等)的逻辑似乎更多。不过,您是您的应用程序的老板,由您决定! :) 干杯!
猜你喜欢
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多