Skip to content

استخدم Bun.spawn() لـ spawn عملية ابنة. عند spawn عملية bun ثانية، يمكنك فتح قناة اتصال مباشرة بين العمليات (IPC) بين العمليتين.

NOTE

هذه الواجهة متوافقة فقط مع عمليات `bun` الأخرى. استخدم `process.execPath` للحصول على مسار التنفيذ `bun` قيد التشغيل حاليًا.
ts
const child = Bun.spawn(["bun", "child.ts"], {
  ipc(message) {
    /**
     * الرسالة المستلمة من العملية الفرعية
     **/
  },
});

يمكن للعملية الأصلية إرسال رسائل إلى العملية الفرعية باستخدام طريقة .send() على مثيل Subprocess المعاد. يتوفر أيضًا مرجع إلى العملية الفرعية المرسلة كوسيطة ثانية في معالج ipc.

ts
const childProc = Bun.spawn(["bun", "child.ts"], {
  ipc(message, childProc) {
    /**
     * الرسالة المستلمة من العملية الفرعية
     **/
    childProc.send("الرد على الابن");
  },
});

childProc.send("أنا والدك"); // يمكن للأصل إرسال رسائل إلى الابن أيضًا

في هذه الأثناء، يمكن للعملية الفرعية إرسال رسائل إلى أصلها باستخدام process.send() واستقبال الرسائل باستخدام process.on("message"). هذه هي نفس الواجهة المستخدمة لـ child_process.fork() في Node.js.

ts
process.send("مرحبًا من الابن كسلسلة");
process.send({ message: "مرحبًا من الابن ككائن" });

process.on("message", message => {
  // طباعة الرسالة من الأصل
  console.log(message);
});

يتم تحويل جميع الرسائل باستخدام واجهة JSC serialize، والتي تسمح بنفس مجموعة الأنواع القابلة للنقل المدعومة من postMessage و structuredClone، بما في ذلك السلاسل ومصفوفات typed والتيارات والكائنات.

ts
// إرسال سلسلة
process.send("مرحبًا من الابن كسلسلة");

// إرسال كائن
process.send({ message: "مرحبًا من الابن ككائن" });

راجع الوثائق > API > عمليات الابنة للحصول على الوثائق الكاملة.

Bun بواسطة www.bunjs.com.cn تحرير