import { connect } from "nats"; import readline from "readline"; const NATS_SERVER = process.env.NATS_SERVER || "nats://localhost:4222"; const NATS_AUTH_TOKEN = process.env.NATS_AUTH_TOKEN || "s3cr3t"; console.log( `Connecting to NATS at ${NATS_SERVER} with token ${NATS_AUTH_TOKEN}` ); const nc = await connect({ servers: NATS_SERVER, token: NATS_AUTH_TOKEN }); console.log(`Connected to NATS`); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); // Handle Docker container signals gracefully process.on("SIGINT", () => { console.log("\nReceived SIGINT, closing connections..."); rl.close(); nc.close(); process.exit(0); }); process.on("SIGTERM", () => { console.log("\nReceived SIGTERM, closing connections..."); rl.close(); nc.close(); process.exit(0); }); function askForMessage() { rl.question("Enter a message (or 'quit' to exit): ", (message) => { if (message.toLowerCase() === "quit" || message.toLowerCase() === "exit") { console.log("Goodbye!\n"); rl.close(); nc.close(); process.exit(0); } nc.publish("test", message); askForMessage(); }); } askForMessage();