从函数发出事件的正确方法-Node JS-Socket.io

时间:2018-08-07 17:04:43

标签: javascript node.js socket.io

假设我有两个文件。

server.js

test.js

server.js包含所有初始化代码(Mongoose,Express..etc)。它还具有以下代码:

const io = require('socket.io')(server);

在我的test.js文件中,我有一些与mqtt相关的东西。无关紧要,但是请理解,我那里没有任何变量访问权限(req,app)。因为该文件不是路由或其他任何内容。

在server.js中包含为:

require('test.js');

我没有讨论MQTT的任何细节或其工作方式。考虑一下test.js中的一个或多个函数在特定时间运行。因此,一旦发生这种情况,我如何使用test.js文件中的socket.io发出事件?

我的客户端仪表板已准备好接收事件。我只是很困惑如何设计系统,尤其是如何访问io文件中存在的server.js变量。

1 个答案:

答案 0 :(得分:1)

如前所述,只是从test.js中导出一个以io作为参数的函数:

  module.exports = function test(io) {
    io.on("connection", socket => {
      socket.emit("greeting", "hello world!");
    });
 };

只需从server.js中传递参数:

 require("./test.js")(io);