【问题标题】:Separating socket.io namespaces into separate files将 socket.io 命名空间分离到单独的文件中
【发布时间】:2012-12-04 01:26:31
【问题描述】:

我编写了两个相对较大的 socket.io 应用程序,一个用于玩游戏,另一个用于聊天,我将它们分成两个命名空间。

我现在想将这些从我的主文件 app.js 移到某个命名空间目录中,并在我的快速应用程序中要求它们,从而保留所有功能。

我将如何解决这个问题,或者有什么方法可以以其他方式获得我想要做的事情的效果?

【问题讨论】:

  • 你能给出一些简化的代码示例吗?
  • 您可以使用人们用于 Express 和 Connect 的相同模式:stackoverflow.com/questions/6059246/…
  • 那么我可以做类似module.exports = function(io){ io.sockets.on('connection', function(socket){ // do whatever }); } 的事情,然后在我的app.js 文件require('./namespaces').(io); 中使用它吗?

标签: node.js namespaces express socket.io


【解决方案1】:

为了使用单独的文件,您需要在 node.js 中使用模块并使用 require 来加载它们。

模块具有特殊的结构和语法,以便能够调用模块函数并与之交互。

在此处阅读有关模块的信息:http://nodejs.org/docs/latest/api/modules.html

如果您需要与模块内的函数、对象和数据进行交互,那么重新构建应用程序的架构可能需要做很多工作。

这是您从开发的最初阶段开始,在应用程序的架构和技术设计过程中就必须注意的事情。

要使用同一个套接字,你必须在需要子模块的父模块中初始化它,并将套接字应用程序句柄传递给这些子节点,他们才能使用它。

最糟糕和最直接的选择是加载 js 文件内容,然后 eval() 它,这绝对不是商业世界的选择。但请记住 - 绝对不建议这样做,并且在商业世界中您永远不应该使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 2017-03-14
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    相关资源
    最近更新 更多