Несколько экземпляров сервера с помощью Хапи.рамки js
Я приближаюсь к этой структуре для node.реализация по нескольким причинам. Простота, большая модульность и быстрая конфигурация из коробки. Вскоре я столкнулся с концепцией стаи, которую я никогда не видел во время моего опыта в изучении экспресса.JS-фреймворка. Из официального руководства приведен следующий пример:
var Good = require('good');
server.pack.register(Good, function (err) {
if (err) {
throw err; // something bad happened loading the plugin
}
server.start(function () {
server.log('info', 'Server running at: ' + server.info.uri);
});
});
Они говорят о пакете:
пакеты-это способ для hapi объединить несколько серверов в один блок, и предназначены для дать единый интерфейс при работе с подключаемый модуль.
эта концепция странная для меня. Сколько раз мы работаем с разными серверами в проекте? Кроме того, мне не ясно, должен ли я каждый раз звонить pack для регистрации плагинов в hapi.
обновление: это код api pre v8, способ регистрации плагина был изменен. (звоните register
непосредственно на server
)
4 ответов
эта концепция странная для меня. Сколько раз мы работаем с разными серверами в проекте?
один пример, когда у вас есть api и веб-сервер. Они обычно разрабатываются отдельно, часто в отдельных хранилищах. Затем вы можете создать третий проект, который объединяет эти плагины:
var Hapi = require('hapi');
var manifest = {
servers: [
{
host: 'localhost',
port: 8000,
options: {
labels: 'api',
cors: true
}
},
{
host: 'localhost',
port: 8001,
options: {
labels: 'web'
}
}
],
plugins: {
'./example-api': [{select: 'api'}],
'./example-web': [{select: 'web'}]
}
};
Hapi.Pack.compose(manifest, function(err, pack) {
pack.start();
});
кроме того, мне не ясно, должен ли я когда-либо звонить Time pack для регистрации плагинов в Хапи.
да, вам нужно позвонить pack.register()
когда вы хотите зарегистрировать плагин. Однако вы можете зарегистрировать несколько плагинов сразу:
plugin.register([
require('crumb'),
require('hapi-auth-cookie')
], function (err) {
// Error handling
}
Посетите Ссылку:http://cronj.com/blog/hapi-mongoose
пример проекта, который может помочь вам РЕПО ссылка:https://github.com/gauravgupta90/Hapi-Mongoose-Angular
для версии hapi ранее 8.x
var server = Hapi.createServer(host, port, {
cors: true
});
server.start(function() {
console.log('Server started ', server.info.uri);
});
для новой версии hapi
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: app.config.server.port });
Hapi.Pack()
больше не доступен в новейших версиях Hapi (8.икс.) Они вытащили функциональность в небольшую библиотеку под названием Glue. Вы можете найти его здесь:https://github.com/hapijs/glue. Это работает точно, как Hapi.Pack()
используется для.
по умолчанию hapi поддерживает несколько соединений, и вы можете настроить их по отдельности, например установка плагинов только для выбранного сервера (например, только API).
вы можете создать экземпляр и запустить несколько соединений, как это:
const hapi = require('hapi');
const port = 3000;
const _ = require('lodash');
// Create hapi server instance
const server = new hapi.Server();
// add connection parameters
server.connection({
host: 'localhost',
port: process.env.PORT || port
});
server.connection({
host: 'localhost',
port: process.env.PORT + 1 || port + 1
});
// Start the server
server.start(function () {
// Log to the console the host and port info
_.forEach(server.connections, function(connection) {
console.log('Server started at: ' + connection.info.uri);
});
});
надеюсь, что это поможет.
Если вам нужны более подробные сведения об этой теме, вы можете найти их в этом руководстве по как запустить отдельный frontend и backend серверов в один проект