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

时间:2018-12-07 01:49:10

标签: node.js socket.io connection hapi

我在我的项目中使用 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 个答案:

答案 0 :(得分:0)

我找到了一种解决方法,可以防止套接字定期断开连接。 answer在这里。

基本上,我的服务器每25秒 一次客户端,客户端必须每25秒定期 pong 服务器。 25秒只是一个任意数字,您可能可以逃脱更多的时间。

通过 ping ponging ,这可以防止 socket.io 重新启动,这在空闲时间过长时似乎可以做到