45 lines
1 KiB
TypeScript
45 lines
1 KiB
TypeScript
import { connect } from "nats";
|
|
import readline from "readline";
|
|
|
|
const NATS_SERVER = process.env.NATS_SERVER || "nats://localhost:4222";
|
|
|
|
const nc = await connect({ servers: NATS_SERVER });
|
|
console.log(`Connected to NATS at ${NATS_SERVER}`);
|
|
|
|
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();
|