代码之家  ›  专栏  ›  技术社区  ›  buydadip

Hapi.js-如何将连接传递到插件

  •  1
  • buydadip  · 技术社区  · 6 年前

    我正在使用 Socket.io 在我的项目中。我为我的套接字创建了一个插件。。。

    await server.register(socket_connections);
    

    哪里 socket_connections 下面是。。。

    const connect = require("./controllers/connect");
    
    module.exports = { 
      name: "SocketPlugin",
      register: connect.socket
    };
    

    connect.socket

    exports.socket = async (server) => {
    
      const io = require("socket.io")(server.listener);
    
      io.on("connection", socket => {
        console.log("Socket Connection");
      });
    }
    

    我的问题是 io 是在插件内部定义的,不应该是这样。如果它是在插件中定义的,服务器连接将继续重新启动。例如,在我的服务器控制台中,定期打印以下内容。。。

    Socket Connection
    Socket Connection
    Socket Connection
    ...
    

    我意识到,解决方案是在插件之外定义服务器连接。所以我想定义一下 const io = require("socket.io")(server.listener); 在插件之外,最好在同一个文件中 server.register

    这件事能在几分钟内完成吗 Hapi.js ? 这是唯一的方法,我可以使一个正确的插座连接,似乎,否则我必须完全取消插件,这是一个有点辛苦。

    1 回复  |  直到 6 年前
        1
  •  0
  •   buydadip    6 年前

    我找到了一个解决办法,防止我的插座定期断开连接。这个 answer

    基本上是我的服务器 ping 客户端每25秒一次,客户端必须定期

    通过 积水 ,这可防止 socket.io 从任何时候重新启动,这似乎是这样做时,闲置太长时间。