gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:43 26 4
gpt4 key购买 nike

我在我的项目中使用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 中完成吗?这似乎是我可以建立正确的套接字连接的唯一方法,否则我必须完全放弃该插件,这有点费力。

最佳答案

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

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

通过pingingponging,这可以防止socket.io重新启动,当它闲置太久时,它似乎会这样做。

关于node.js - Hapi.js - 如何将连接传递给插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53662155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com