57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
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();
|
|
});
|