const WebSocket = require('ws');
const ws = new WebSocket('wss://api.erlcrussia.com/v2/gateway');
ws.on('open', () => {
// 1. Автентифікація
ws.send(JSON.stringify({
action: 'auth',
token: 'your_ws_key_here'
}));
});
ws.on('message', (data) => {
const msg = JSON.parse(data.toString());
switch (msg.code) {
case 5127:
console.log('Підключено, clientId:', msg.clientId);
break;
case 5128:
console.log('Автентифікація успішна');
// 2. Підписка на канали
ws.send(JSON.stringify({
action: 'subscribe',
channels: ['Server', 'Players', 'Queue', 'JoinLogs']
}));
break;
case 5131:
console.log('Підписки:', msg.channels);
break;
case 5130:
console.warn('Відмовлено в каналі:', msg.channel);
break;
case 5133:
console.log('Кеш порожній');
break;
case 5129:
// pong
break;
default:
if (msg.code >= 5100) {
console.error('Помилка:', msg.code, msg.message);
break;
}
// Оновлення даних
if (msg.Name) console.log('Сервер:', msg.Name, 'Гравців:', msg.CurrentPlayers);
if (msg.Players) console.log('Гравці:', msg.Players.length);
if (msg.Queue) console.log('Черга:', msg.Queue.length);
if (msg.JoinLogs) console.log('Лог входу:', msg.JoinLogs);
break;
}
});
ws.on('close', () => {
console.log('З\'єднання закрито');
});
ws.on('error', (err) => {
console.error('Помилка з\'єднання:', err.message);
});