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);
});