50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
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("sessionID", message);
|
|
|
|
askForMessage();
|
|
});
|
|
}
|
|
|
|
askForMessage();
|