Espeficicar que se usará el adaptador node
en modo middleware
// Importar node
import node from '@astrojs/node';
// Añadir la configuracion "adapter"
export default defineConfig({
adapter: node({
mode: 'middleware',
}),
});
Crearemos un fichero para ejecutar el servidor express-server.mjs
// express-server.mjs
import express from 'express';
import { handler as ssrHandler } from './dist/server/entry.mjs';
const app = express();
const base = '/'
app.use(base, express.static('dist/client/'));
app.use(ssrHandler);
app.listen(8080);
Podemos utilizar cluster
para crear multiples hilos de una misma aplicacción.
// express-server-cluster.mjs
import cluster from 'node:cluster';
import express from 'express';
import { handler as ssrHandler } from './dist/server/entry.mjs';
const listenPort = process.env.SERVER_LISTEN_PORT ?? 4321;
const numCPUs = process.env.NUM_WORKERS ?? 1;
if (cluster.isPrimary) {
console.log(`Hilo principal PID=${process.pid} iniciado`);
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`Hilo PID=${worker.process.pid} terminado`);
});
} else {
const base = '/'
const app = express();
app.use(base, express.static('dist/client/'));
app.use(ssrHandler);
const server = app.listen(listenPort, () => {
console.log(`Hilo PID=${process.pid} PUERTO=${listenPort}`);
});
}
Iniciar el servidor
# Único hilo
node express-server.mjs
# Múltiples hilos
node express-server-cluster.mjs