File size: 2,214 Bytes
d4abe4b 1a8794d d4abe4b 1a8794d d4abe4b 1a8794d d4abe4b 1a8794d d4abe4b 1a8794d d4abe4b 1a8794d d4abe4b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
/**
* Simple WebSocket Test Client
* Tests WebSocket connection to HuggingFace Space or local server
*
* Usage:
* npx tsx test-websocket.js
* WS_URL=wss://medagen-backend.hf.space/ws/chat npx tsx test-websocket.js
*/
import WebSocket from 'ws';
const SESSION_ID = 'test-session-123';
const WS_URL = process.env.WS_URL || 'wss://medagen-backend.hf.space/ws/chat';
const API_URL = process.env.API_URL || 'https://medagen-backend.hf.space/api/health-check';
const fullWsUrl = `${WS_URL}?session=${SESSION_ID}`;
console.log('π§ͺ WebSocket Test Client');
console.log('========================\n');
console.log(`Connecting to: ${fullWsUrl}\n`);
const ws = new WebSocket(fullWsUrl);
ws.on('open', () => {
console.log('β
WebSocket connected successfully!\n');
console.log('Listening for messages...\n');
});
ws.on('message', (data) => {
try {
const message = JSON.parse(data.toString());
console.log('π© Received message:');
console.log(JSON.stringify(message, null, 2));
console.log('');
} catch (error) {
console.error('β Error parsing message:', error);
console.log('Raw data:', data.toString());
}
});
ws.on('error', (error) => {
console.error('β WebSocket error:', error.message);
});
ws.on('close', (code, reason) => {
console.log(`\nπ WebSocket closed: code=${code}, reason=${reason || 'none'}`);
process.exit(0);
});
// Keep alive - send ping every 10 seconds
setInterval(() => {
if (ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify({
type: 'ping',
timestamp: new Date().toISOString(),
}));
console.log('π Sent ping');
}
}, 10000);
// Handle graceful shutdown
process.on('SIGINT', () => {
console.log('\n\nπ Closing connection...');
ws.close();
});
console.log('π‘ Tip: Open another terminal and send a POST request to:');
console.log(` curl -X POST ${API_URL} \\`);
console.log(` -H "Content-Type: application/json" \\`);
console.log(` -d '{"text":"eye pain","user_id":"anonymous","session_id":"${SESSION_ID}"}'`);
console.log('');
console.log(`π‘ WebSocket URL: ${fullWsUrl}`);
console.log(`π API URL: ${API_URL}`);
console.log('');
console.log('Press Ctrl+C to exit\n');
|