ค้นหาเว็บไซต์

javascript - อ่านสตริงจาก ReadableStream ทีละบรรทัด


ฉันกำลังใช้ Bun เพื่อสื่อสารกับกระบวนการลูก stockfish

let process = Bun.spawn(["stockfish"], { stdin: "pipe" });

CLI ของ Stockfish อ่านคำสั่งจาก stdin และเขียนคำสั่งไปยัง stdout เมื่อกระบวนการเริ่มทำงาน มันจะยังคงทำงานอยู่ ตอบสนองต่อคำสั่งโดยไม่ปิดตัว

เมื่อเรียกใช้ Bun.spawn ด้วยพารามิเตอร์เหล่านี้ Bun จะส่งกลับอินสแตนซ์ของ Subprocess<"pipe", "pipe", "inherit"> ออบเจ็กต์นี้มีคุณสมบัติ stdout ซึ่งเป็นอินสแตนซ์ของ ReadableStream<Uint8Array> สำหรับเข้าถึงข้อมูล

เนื่องจาก stockfish มักจะส่งออกตัวขึ้นบรรทัดใหม่พร้อมกับแต่ละบรรทัดที่มันพิมพ์ ฉันจึงจำเป็นต้องสามารถอ่านสตริงจากสตรีมทีละบรรทัด ในอุดมคติ ฉันสามารถทำบางอย่างแบบนี้ได้

process.stdin.write(`isready\n`);
process.stdout.readLine(); // "readyok"

วิธีที่ดีที่สุดในการทำให้สิ่งนี้สำเร็จคืออะไร?