لتشغيل خوادم HTTP متعددة بشكل متزامن، استخدم خيار reusePort في Bun.serve() الذي يشارك نفس المنفذ عبر عمليات متعددة.
هذا يوازن تلقائيًا الطلبات الواردة عبر مثيلات Bun متعددة.
ts
import { serve } from "bun";
const id = Math.random().toString(36).slice(2);
serve({
port: process.env.PORT || 8080,
development: false,
// مشاركة نفس المنفذ عبر عمليات متعددة
// هذا هو الجزء المهم!
reusePort: true,
async fetch(request) {
return new Response("مرحبًا من Bun #" + id + "!\n");
},
});NOTE
**Linux فقط** — Windows و macOS يتجاهلان خيار `reusePort`. هذا قيد في نظام التشغيل مع `SO_REUSEPORT`، للأسف.بعد حفظ الملف، ابدأ خوادمك على نفس المنفذ.
في الخلفية، يستخدم هذا خيارات المقبس SO_REUSEPORT و SO_REUSEADDR الخاصة بـ Linux لضمان توازن الحمل العادل عبر عمليات متعددة. اعرف المزيد عن SO_REUSEPORT و SO_REUSEADDR
ts
import { spawn } from "bun";
const cpus = navigator.hardwareConcurrency; // عدد أنوية 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 أيضًا بتنفيذ وحدة node:cluster، لكن هذا بديل أسرع وأبسط ومحدود.