Как экспортировать ссылку центральной переменной
Я использую хапи.
Я также использую клиент 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
,