Как экспортировать ссылку центральной переменной

Я использую хапи.

Я также использую клиент NES для подключения к другому экземпляру узла. Чтобы получить доступ к этому сокету из маршрутов, я присоединяю его к переменной сервера следующим образом:

exports = async () => {
  //api
  var server = new Hapi.Server({
    host: process.env.WEB_HOST || '127.0.0.1',
    port: process.env.WEB_PORT || '8080'
  });

  // register plugins
  await server.register(plugins);

  // add routes
  await routes(server);

  server.socket = new Socket(identifier); // uses NES

  return server;
}

Я хочу получить доступ к сокету из файла библиотеки. Как мне это сделать, не передавая каждый раз переменную сервера? Когда я пытаюсь module.exports сервер, он никогда не дает мне ссылку, только версия переменной на момент экспорта.

1 ответ

Вы пробовали server.decorate. Если я правильно понимаю, вы хотите получить доступ к переменной сокета из маршрутов. Почему бы просто не создать базовый плагин и создать свой экземпляр сокета и передать его в объект сервера. Например;

exports.plugin = {
    async register(server, options) {                 
        server.decorate('server', 'socketConn', new Socket(identifier));
    },
    name: 'socket-connection'
};

и в ваших маршрутах вы можете получить доступ к этой переменной как request.server.socketConn,

Другие вопросы по тегам