派生子行程並使用 IPC 通訊
使用 Bun.spawn() 來派生子行程。在派生第二個 bun 行程時,你可以在兩個行程之間開啟直接的行程間通訊(IPC)通道。
const child = Bun.spawn(["bun", "child.ts"], {
ipc(message) {
/**
* 從子行程接收到的訊息
**/
},
});
父行程通過傳回的 Subprocess 例項上的 .send() 方法向子行程傳送訊息。ipc 處理程序還會將子行程作為其第二個引數接收。
const childProc = Bun.spawn(["bun", "child.ts"], {
ipc(message, childProc) {
/**
* 從子行程接收到的訊息
**/
childProc.send("回覆子行程");
},
});
childProc.send("我是你的父親"); // 父行程也可以向子行程傳送訊息
子行程通過 process.send() 向父行程傳送訊息,並通過 process.on("message") 接收訊息。這與 Node.js 中 child_process.fork() 使用的 API 相同。
process.send("來自子行程的字串訊息");
process.send({ message: "來自子行程的物件訊息" });
process.on("message", message => {
// 列印來自父行程的訊息
console.log(message);
});
預設情況下,Bun 使用 JSC serialize API 序列化訊息。此 API 支援 structuredClone 支援的所有內容,包括字串、型別化陣列和物件。此 API 不支援轉移物件的所有權。
// 傳送字串
process.send("來自子行程的字串訊息");
// 傳送物件
process.send({ message: "來自子行程的物件訊息" });
請參閱子行程。