使用 Bun.spawn() 生成子進程。當生成第二個 bun 進程時,你可以在兩個進程之間打開直接的進程間通信 (IPC) 通道。
NOTE
此 API 僅與其他 `bun` 進程兼容。使用 `process.execPath` 獲取當前運行的 `bun` 可執行文件的路徑。ts
const child = Bun.spawn(["bun", "child.ts"], {
ipc(message) {
/**
* 從子進程接收的消息
**/
},
});父進程可以使用返回的 Subprocess 實例上的 .send() 方法向子進程發送消息。發送子進程的引用也可在 ipc 處理程序的第二個參數中獲得。
ts
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 相同。
ts
process.send("來自子進程的字符串消息");
process.send({ message: "來自子進程的對象消息" });
process.on("message", message => {
// 打印來自父進程的消息
console.log(message);
});所有消息都使用 JSC serialize API 進行序列化,它允許使用與 postMessage 和 structuredClone 支持的相同 可傳輸類型,包括字符串、類型化數組、流和對象。
ts
// 發送字符串
process.send("來自子進程的字符串消息");
// 發送對象
process.send({ message: "來自子進程的對象消息" });請參閱 文檔 > API > 子進程 獲取完整文檔。