#!/usr/bin/env node // Test script for text transport testing // Tests receiving 1 large and 1 small text from JavaScript serviceA to JavaScript serviceB // Uses NATSBridge.js smartreceive with "text" type const { smartreceive, log_trace } = require('./src/NATSBridge'); // Configuration const SUBJECT = "/NATSBridge_text_test"; const NATS_URL = "nats.yiem.cc"; // Helper: Log with correlation ID function log_trace(message) { const timestamp = new Date().toISOString(); console.log(`[${timestamp}] ${message}`); } // Receiver: Listen for messages and verify text handling async function test_text_receive() { // Connect to NATS const { connect } = require('nats'); const nc = await connect({ servers: [NATS_URL] }); // Subscribe to the subject const sub = nc.subscribe(SUBJECT); for await (const msg of sub) { log_trace(`Received message on ${msg.subject}`); // Use NATSBridge.smartreceive to handle the data const result = await smartreceive( msg, { maxRetries: 5, baseDelay: 100, maxDelay: 5000 } ); // Result is a list of {dataname, data, type} objects for (const { dataname, data, type } of result) { if (typeof data === 'string') { log_trace(`Received text '${dataname}' of type ${type}`); log_trace(` Length: ${data.length} characters`); // Display first 100 characters if (data.length > 100) { log_trace(` First 100 characters: ${data.substring(0, 100)}...`); } else { log_trace(` Content: ${data}`); } // Save to file const fs = require('fs'); const output_path = `./received_${dataname}.txt`; fs.writeFileSync(output_path, data); log_trace(`Saved text to ${output_path}`); } else { log_trace(`Received unexpected data type for '${dataname}': ${typeof data}`); } } } // Keep listening for 10 seconds setTimeout(() => { nc.close(); process.exit(0); }, 120000); } // Run the test console.log("Starting text transport test..."); console.log("Note: This receiver will wait for messages from the sender."); console.log("Run test_js_to_js_text_sender.js first to send test data."); // Run receiver console.log("testing smartreceive for text"); test_text_receive(); console.log("Test completed.");