Skip to content

Per eseguire più server HTTP contemporaneamente, usa l'opzione reusePort in Bun.serve() che condivide la stessa porta tra più processi.

Questo bilancia automaticamente il carico delle richieste in entrata tra più istanze di Bun.

ts
import { serve } from "bun";

const id = Math.random().toString(36).slice(2);

serve({
  port: process.env.PORT || 8080,
  development: false,

  // Condivide la stessa porta tra più processi
  // Questa è la parte importante!
  reusePort: true,

  async fetch(request) {
    return new Response("Ciao da Bun #" + id + "!\n");
  },
});

NOTE

**Solo Linux** — Windows e macOS ignorano l'opzione `reusePort`. Questa è una limitazione del sistema operativo con `SO_REUSEPORT`, purtroppo.

Dopo aver salvato il file, avvia i tuoi server sulla stessa porta.

Sotto il cofano, questo usa le opzioni socket Linux SO_REUSEPORT e SO_REUSEADDR per garantire un bilanciamento del carico equo tra più processi. Scopri di più su SO_REUSEPORT e SO_REUSEADDR

ts
import { spawn } from "bun";

const cpus = navigator.hardwareConcurrency; // Numero di core CPU
const buns = new Array(cpus);

for (let i = 0; i < cpus; i++) {
  buns[i] = spawn({
    cmd: ["bun", "./server.ts"],
    stdout: "inherit",
    stderr: "inherit",
    stdin: "inherit",
  });
}

function kill() {
  for (const bun of buns) {
    bun.kill();
  }
}

process.on("SIGINT", kill);
process.on("exit", kill);

Bun ha anche implementato il modulo node:cluster, ma questa è un'alternativa più veloce, semplice e limitata.

Bun a cura di www.bunjs.com.cn