代码之家  ›  专栏  ›  技术社区  ›  Jithesh Kt

从函数节点js-socket.io发出事件的正确方法

  •  0
  • Jithesh Kt  · 技术社区  · 6 年前

    假设我有两个文件。

    server.js

    test.js

    server.js有所有的初始化代码(mongoose、express等)。它还具有以下代码:

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

    在test.js文件中,我有一些与mqtt相关的内容。这是无关的,但是,请理解,我没有任何变量访问在那里(req,app)。因为那个文件不是路由的一部分。

    它包含在server.js中,如下所示:

    require('test.js');
    

    我没有涉及到任何有关MQTT或它如何工作的细节。假设test.js中的一个或多个函数在特定时间运行。所以,当发生这种情况时,如何使用test.js文件中的socket.io发出事件?

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jonas Wilms    6 年前

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

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

    在server.js中,只需传递以下参数:

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