nats-example/client.ts

50 lines
1.2 KiB
TypeScript
Raw Permalink Normal View History

2025-08-04 10:14:50 +02:00
import { connect } from "nats";
import readline from "readline";
const NATS_SERVER = process.env.NATS_SERVER || "nats://localhost:4222";
2025-08-04 10:53:07 +02:00
const NATS_AUTH_TOKEN = process.env.NATS_AUTH_TOKEN || "s3cr3t";
2025-08-04 10:14:50 +02:00
2025-08-04 10:53:07 +02:00
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`);
2025-08-04 10:14:50 +02:00
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);
}
2025-08-04 11:32:00 +02:00
nc.publish("sessionID", message);
2025-08-04 10:14:50 +02:00
askForMessage();
});
}
askForMessage();