diff --git a/debug_client.js b/debug_client.js new file mode 100644 index 0000000..18eeb93 --- /dev/null +++ b/debug_client.js @@ -0,0 +1,56 @@ +const WebSocket = require('ws'); +const readline = require('readline'); + +const url = 'wss://connect4.abunchofknowitalls.com'; +console.log(`Connecting to ${url}...`); +const ws = new WebSocket(url); + +let pingInterval; + +ws.on('open', () => { + console.log('Connected to server!'); + console.log('Type a message and press Enter to send raw text.'); + // Keep the connection alive by sending a ping every 30 seconds + pingInterval = setInterval(() => { + if (ws.readyState === WebSocket.OPEN) { + ws.ping(); + } + }, 30000); +}); + +ws.on('message', (data) => { + // data is usually a Buffer in 'ws', convert to string + console.log('< ' + data.toString()); +}); + +ws.on('pong', () => { + // console.log('Received pong'); +}); + +ws.on('close', () => { + console.log('Disconnected from server.'); + if (pingInterval) clearInterval(pingInterval); + process.exit(0); +}); + +ws.on('error', (err) => { + console.error('WebSocket error:', err.message); + if (pingInterval) clearInterval(pingInterval); +}); + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + prompt: '> ' +}); + +rl.prompt(); + +rl.on('line', (line) => { + if (ws.readyState === WebSocket.OPEN) { + ws.send(line); + } else { + console.log('Socket not open. State:', ws.readyState); + } + rl.prompt(); +});