Hapi.js - Как передавать подключения к плагинам - PullRequest
0 голосов
/ 07 декабря 2018

Я использую 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 голосов
/ 16 января 2019

Я нашел обходной путь для предотвращения периодического отключения моих сокетов. ответ здесь.

По сути, мой сервер пингует клиента каждые 25 секунд, и клиент должен периодически понг сервера каждые 25 секунд.25 секунд - это произвольное число, вы, вероятно, можете получить больше.

По пинг и пинг , это предотвращает socket.io от перезапуска, что, кажется, происходит, когда он простаивает слишком долго.

...