mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-21 05:50:55 +08:00
27 lines
876 B
TypeScript
27 lines
876 B
TypeScript
/* The driver-pattern exemplar: an echo server the harness's client
|
|
* driver talks to. Every log is causally ordered by the driver's strict
|
|
* request/response pacing (one in-flight message — chunk boundaries stay
|
|
* deterministic on loopback), so stdout compares byte-exact. */
|
|
import { createServer } from "node:net";
|
|
|
|
const server = createServer((sock) => {
|
|
console.log("connection");
|
|
sock.on("data", (chunk) => {
|
|
const text = chunk.toString("utf8");
|
|
console.log(`data ${text}`);
|
|
if (text === "quit") {
|
|
sock.end("bye");
|
|
server.close(() => console.log("server closed"));
|
|
} else {
|
|
sock.write(`echo:${text}`);
|
|
}
|
|
});
|
|
sock.on("end", () => console.log("end"));
|
|
sock.on("close", () => console.log("close"));
|
|
});
|
|
|
|
server.listen(0, () => {
|
|
console.log("listening");
|
|
process.stderr.write(`PORT ${server.address().port}\n`);
|
|
});
|