我在我的项目中使用 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
中完成吗?这是我似乎可以建立适当的套接字连接的唯一方法,否则,我将不得不完全放弃该插件,这会有些麻烦。
答案 0 :(得分:0)
我找到了一种解决方法,可以防止套接字定期断开连接。 answer在这里。
基本上,我的服务器每25秒 一次客户端,客户端必须每25秒定期 pong 服务器。 25秒只是一个任意数字,您可能可以逃脱更多的时间。
通过 ping 和 ponging ,这可以防止 socket.io 重新启动,这在空闲时间过长时似乎可以做到