• Данный материал предоставлен сайтом исключительно в ознакомительных целях.
    Администрация не несет ответственности за его содержимое. По всем жалобам пишите на почту abusevhguru@yandex.ru

Как работать с websocket market.csgo.com?

Islam

Свой Человек
Сообщения
413
Реакции
109

Islam

  • 413
  • 109
Как работать с websocket market.csgo.com?
  • Ставим библиотеку ws-reconnect / npm i ws-reconnect --save
  • Подключаем
    Код:
    import websocket from 'ws-reconnect';
  • Код:
    const ws = new websocket('wss://wsn.dota2.net/wsn/');
    
    const market_key = config.market_key;
    
    ws.start();
    
    const GetWSAuth = () => {
    
        console.info(`Бот`, 'Попытка войти на тп');
    
        request.post({
            url: `https://market.csgo.com/api/PingPong/?key=${market_key}`,
            json: true
        });
    
        request.post({
            url: `https://market.csgo.com/api/GetWSAuth/?key=${market_key}`,
            json: true
        }, (error, response, body) => {
            if (body.success !== true) {
                console.info(`Бот`, `Ошибка! Повторяем попытку войти на тп - ${body}`, `Через 60 cекунд`);
                return setTimeout(() => {
                    GetWSAuth();
                }, 60 * 6000)
            }
    
            ws.socket.send(body.wsAuth, (err) => {
                if (err) {
                    console.error(err);
                    return setTimeout(() => {
                        GetWSAuth();
                    }, 60 * 6000)
                } else {
                    console.info(`Бот`, `Авторизовался на торговой площадке [websocket]`);
                }
            });
        });
    
    };
    
    setInterval(() => {
        ws.socket.send('ping', (err) => {
            if (err) {
                GetWSAuth();
                console.error(err);
            }
        });
    }, 40 * 1000);
    
    ws.on("reconnect", () => {
        console.info(`Бот`, "reconnecting");
    });
    
    ws.on("connect", () => {
        GetWSAuth();
    });
    
    ws.on("destroyed", () => {
        console.info(`Бот`, "destroyed");
    });
    
    ws.on('message', (message) => {
        try {
            let { type, data } = JSON.parse(message);
            console.info(`Бот`, type, data);
        } catch (e) {
            console.info(`Бот`, message);
        }
    });
Каналы не требующие подписки (при условии авторизации):
  • additem_go - добавление предмета на странице "Мои вещи".
  • itemout_new_go - Исчезание предмета на странице "Мои вещи".
  • itemstatus_go - Изменение статуса предмета на странице "Мои вещи".
  • money - Изменение баланса пользователя.
  • webnotify - Получение уведомлений от администрации, доступности предмета для вывода, о покупках вещей.

Доступные каналы:
  • newitems_go - информация об изменениях в цене или выставлении на продажу предметов CS:GO. (Осторожно, канал генерирует очень много трафика)
  • history_go - история продаж которая отображается на каждой странице сайта.
Для подписки кидаем запрос на канал.

Пример:
Код:
ws.socket.send('newitems_go', (err) => {
        if (err) {
            console.error(err);
        }
 });
 

vhcrew

Команда форума
Администрация
Сообщения
2,283
Реакции
2,105

vhcrew

  • 2,283
  • 2,105
Такие темы никто не оценивает к большому сожалению.
 

nikita64643

Опытный
Сообщения
280
Реакции
79

nikita64643

  • 280
  • 79
Такие темы никто не оценивает к большому сожалению.
Потому что не кто до этого и не доходит, для многих эта тема очень заоблачная, мы и то только начали с веб сокетами знакомиться.
 

test227test227

Опытный
Сообщения
219
Реакции
104

test227test227

  • 219
  • 104
Колбеки? Колбеки в 2018?

Ау, уже async/await во всю юзают! Ну промайсификация точно везде есть, а у тебя колбеки и либа 'request'.

Хватит уже может копипастить. И нехрен использовать шаблоны `` там, где они не нужны (`Bot`).
 

Islam

Свой Человек
Сообщения
413
Реакции
109

Islam

  • 413
  • 109
Колбеки? Колбеки в 2018?

Ау, уже async/await во всю юзают! Ну промайсификация точно везде есть, а у тебя колбеки и либа 'request'.

Хватит уже может копипастить. И нехрен использовать шаблоны `` там, где они не нужны (`Bot`).
1) Смотрим дату создания темы.
2) Я показал на примере модулей, где нет промисов. Конечно же можно использовать либу bluebird, но в данном случае я им не воспользовался, ибо это пример.
3) В ‘Bot’ у меня была переменная.
4) Го ещё очевидного, а то мы тут не знаем как писать на JS в 2к18.





Прошло много времени, а ты ничуть не изменился.

И чтобы ты был спокоен - в своих проектах я использую только промисы (и конечно же Promise.all, как же без него). Го без срача? Надоели Ваши детские закидоны.
 

test227test227

Опытный
Сообщения
219
Реакции
104

test227test227

  • 219
  • 104
1) Смотрим дату создания темы.
2) Я показал на примере модулей, где нет промисов. Конечно же можно использовать либу bluebird, но в данном случае я им не воспользовался, ибо это пример.
3) В ‘Bot’ у меня была переменная.
4) Го ещё очевидного, а то мы тут не знаем как писать на JS в 2к18.





Прошло много времени, а ты ничуть не изменился.

И чтобы ты был спокоен - в своих проектах я использую только промисы (и конечно же Promise.all, как же без него). Го без срача? Надоели Ваши детские закидоны.
1) Сентябрь 2017 - уже были и широко использовались даже async/await.
2) я об этом тоже упомянул. Использовать модуль request - это издевательство. Без блюберда в 90% случаев можно обойтись, промайсы уже как сотню лет в JS нативно поддерживаются. axios два года на рынке, не говоря уже про другие либы.
3) console.info(`Бот` - и где тут переменная?)
4) видимо не знаешь)

Про свои проекты - поздно уже промисы использовать, уже как почти два года стоит юзать async/await (хоть это и сахар).

Не изменился и не изменюсь, говнокод не любил и не люблю. Нехер так делать. А учить кого-то так делать - вообще идиотизм.
 

Islam

Свой Человек
Сообщения
413
Реакции
109

Islam

  • 413
  • 109
1) Сентябрь 2017 - уже были и широко использовались даже async/await.
2) я об этом тоже упомянул. Использовать модуль request - это издевательство. Без блюберда в 90% случаев можно обойтись, промайсы уже как сотню лет в JS нативно поддерживаются. axios два года на рынке, не говоря уже про другие либы.
3) console.info(`Бот` - и где тут переменная?)
4) видимо не знаешь)

Про свои проекты - поздно уже промисы использовать, уже как почти два года стоит юзать async/await (хоть это и сахар).

Не изменился и не изменюсь, говнокод не любил и не люблю. Нехер так делать. А учить кого-то так делать - вообще идиотизм.
1) Я не говорил, что их не использую.
2) Дело вкуса. Я использовал axios, когда начинал вникать в изоморфизм, не понравилась эта либа. Fetch по приятней будет и тем более полезней.
3) Она была в коде, включи голову.
4) Знаю. По больше твоего)

Например, не использует промисы. Ща бы работать с пару либ и говорить, что 90% используют промисы.




Ты на свой код посмотри, в твоём жалком портфолио ты сам используешь колбеки.
. Тему ты создавал 21 июня 2017 года.

И дабы не быть таким же пустозвоном, приведу пример простейшего кода по получению списков вопросов/ответов из FAQ.





И говорю сразу, там такие свойства из-за того что использую socket. Очень полезно при работе с React+Redux.

И я никого тут не учу.
 

test227test227

Опытный
Сообщения
219
Реакции
104

test227test227

  • 219
  • 104
1) Я не говорил, что их не использую.
2) Дело вкуса. Я использовал axios, когда начинал вникать в изоморфизм, не понравилась эта либа. Fetch по приятней будет и тем более полезней.
3) Она была в коде, включи голову.
4) Знаю. По больше твоего)

Например, не использует промисы. Ща бы работать с пару либ и говорить, что 90% используют промисы.




Ты на свой код посмотри, в твоём жалком портфолио ты сам используешь колбеки.
. Тему ты создавал 21 июня 2017 года.

И дабы не быть таким же пустозвоном, приведу пример простейшего кода по получению списков вопросов/ответов из FAQ.





И говорю сразу, там такие свойства из-за того что использую socket. Очень полезно при работе с React+Redux.

И я никого тут не учу.
1) во время написания темы - не использовал.
2) fetch это которая с 50к загрузок и колбеками? Другой не знаю. Если ты про нее, то она ужасна по, надеюсь, очевидным причинам.
И нет, это не дело вкуса. У axios настолько простой синтаксис, что проще быть уже не может, соответственно и лучше тоже.
3) везде была? Там же не в одной строчке такая штука, а везде. А если была везде, то это тоже говнокод)
4) наверное, телепатически определил)

Причем тут либа яндекса - я не вьезжаю. Ну, node-steam-tradeoffer-manager тоже использует колбеки, на ES5 (не полностью) едва переходит. Это не значит, что тебе нужно делать так же - ты же не опенсорсные библиотеки разрабатываешь, где изменение сломает все. К тому же если это чистое приложение.

Про мое портфолио - оно давно забыто. И в том коде, где колбеки, есть комментарий, что мне было тупо лень их использовать.

По поводу твоего кода на скрине, вижу async, а ниже вижу что-то sequelize-подобное (может ты еще считаешь, что секвелайс - хороший выбор?) ). А еще ниже вижу тупейший код - кетчить эксепшен в методе сервиса/репозитория и отдавать data: null вместо него - полнейшая тупость.

Кстати говоря, шесть строчек присвоения же можно мерджить просто (да и вообще там полная магия происходит, свойства в никуда, а ниже метод .get без параметров).

react+redux конечно класно, хоть vue и покруче будет (про нейтив ничего не говорю), но круто.
 

Islam

Свой Человек
Сообщения
413
Реакции
109

Islam

  • 413
  • 109
3) везде была? Там же не в одной строчке такая штука, а везде. А если была везде, то это тоже говнокод)
Нет.


Про мое портфолио - оно давно забыто.
Так я тоже это писал не вчера и не 13 сентября. Выложил сюда, ибо у себя уже не использовал. В группе csgo.tm многие спрашивали как подключатся - я показал ёбаный ПРИМЕР, но ты и до этого доебался)

Всё время возникаете, ни разу не видел Ваш код (твой на гите показал и говоришь что тебе лень было делать, отмазка на все случаи жизни) и Ваши живые проекты (Они все померли давно). Мог хотя бы один раз помочь народу, а не кукореть во всех темах какие они рукожопые.


sequelize-подобное (может ты еще считаешь, что секвелайс - хороший выбор?) ).
Ну если есть альтернатива с поддержкой PostgreSql - делись.

кетчить эксепшен в методе сервиса/репозитория и отдавать data: null вместо него - полнейшая тупость.
Я это делаю потому что у меня нет реализации показывающая ошибки. Наверное лучше отдавать null, чем кидать message в котором пользователь ничего не поймёт) И там вообще вероятность ошибки 0.1%. Я логирую там где реально может выскочить ошибка.
Возможно это не правильно, но пока что я вижу так.

а ниже метод .get без параметров).
Так-то методы с получением данных принято вызывать без параметров)

react+redux конечно класно, хоть vue и покруче будет (про нейтив ничего не говорю), но круто.
В апреле 2017, когда я начинал делать воткит, мой выбор пал на React+Redux (SSR), ибо он живёт давно и разрабатывается FaceBook.

Возможно Vue круче, но сейчас мне как-то не хочется переписывать сайт, который и так стабильно работает и приносит хорошие деньги)


И как-то не хочется останавливаться на JS. Сейчас пытаюсь обуздать Swift, уже написал софт для управления всеми проектами под ios.
В универе C++ изучил и Prolog (логическая парадигма, не ебу зачем это вообще преподавали).

P.s Отвечай быстрей, я два дня ждал ответа, имей уважение перед старшими :D
 

test227test227

Опытный
Сообщения
219
Реакции
104

test227test227

  • 219
  • 104
Что "нет"? Не использовались везде переменные? Тогда почему везде шаблоны? Или нет, потому что это по твоему не говнокод?

но ты и до этого доебался)
Согласен, это пример. Но примеры тоже нужно хорошо писать, как никак, примеры нужны людям, не особо шарящим что там происходит, либо тем, кто только вникает в эту тему, и не нужно изначально учить людей говнокоду (на момент написания это уже был не лучший код, именно поэтому я и отписал).

Всё время возникаете, ни разу не видел Ваш код
Наверное, потому что проекты приватные) Но, если ты так просишь, могу скинуть в личку, я его не стыжусь)

твой на гите показал
Кстати говоря на моем же гите висит прекрасная опенсорсная библиотека (хоть и WIP, но бекендовая часть уже почти написана)

говоришь что тебе лень было делать
Это проект из темы "делаю бесплатно все что попросите", которая, возможно, до сих пор висит на этом же форуме (возможно даже на этом акке, возможно на test228). Я никого не учил этим проектом, суть была лишь набить что-то в портфолио. Именно поэтому там нету комментариев, все зафигачено в один файл и с колбеками. Кстати говоря, там большая часть функций вообще не поддерживала промисы (и до сих пор не поддерживает), ибо это методы DoctorMcKay'а, который не сильно спешит дальше старого node LTS.

Ваши живые проекты (Они все померли давно)
К сожалению.

Мог хотя бы один раз помочь народу, а не кукореть во всех темах какие они рукожопые
Позиция "раз критикуешь, сделай лучше" - изначально глупа. Мне не нужно быть механиком, что бы сказать механику, что тот плохо справился с работой починить машину. Тут тоже самое. Пойми, я не критикую твою деятельность, я критикую то, как ты это делаешь (почти что дизинформация). Более того, я обычное человеческое спасибо тебе скажу.


Ну если есть альтернатива с поддержкой PostgreSql - делись.
Wetland JS - поищи (что-то с буфером обмена случилось, не могу ничего вставить, видимо баг на форуме)


Так-то методы с получением данных принято вызывать без параметров)
Ахаха, ты уверен?))) А ну ка ткни меня бошкой кто это сказал, первый раз слышу) То есть вот так:

JavaScript:
class ServiceCheckerService {
  method(ctx) {
    this.params = ctx.params;

    return this.get();
  }
}

лучше, чем так:


JavaScript:
class ServiceCheckerService {

  method(ctx) {

    return this.get(ctx.params);

  }

}

? Однозначно нет. method - это же не входная точка приложения, тебе не нужны эти переменные везде. А если нужны, тогда должно быть что-то типа
JavaScript:
.setParams(params).method()
, но точно не так, как ты говоришь. Либо я туплю, и не понял о чем ты. Если это так, то извиняюсь сразу, но обьясни.


В апреле 2017, когда я начинал делать воткит, мой выбор пал на React+Redux (SSR), ибо он живёт давно и разрабатывается FaceBook.

Возможно Vue круче, но сейчас мне как-то не хочется переписывать сайт, который и так стабильно работает и приносит хорошие деньги)
Ты полностью прав, даже не намекаю на переписывание, это полный бред. Сказал о крутости без сарказма)

P.s Отвечай быстрей, я два дня ждал ответа, имей уважение перед старшими
На сколько ты старше?) Года 3-4?) В любом случае, как то нету возможности да и особого желания проверять форум говно-скриптом чаще, чем раз в несколько часов) А иногда и месяцев)
 

Islam

Свой Человек
Сообщения
413
Реакции
109

Islam

  • 413
  • 109
Наверное, потому что проекты приватные) Но, если ты так просишь, могу скинуть в личку, я его не стыжусь)
Кидай.

Ахаха, ты уверен?))) А ну ка ткни меня бошкой кто это сказал, первый раз слышу) То есть вот так:
Препод из уника и так-то чекни любую книгу по принципам ООП, там все написано :)

В моем случае - зачем кидать в get параметры, они все равно в данном классе всегда одни и те же, при каждом запросе происходит инициализация класса. Возможно это плохая задумка, но если у тебя есть другой способ - жду тебя в лс с твоей реализацией (могу оплатить, могу к нам в команду взять, стабильные 100к в месяц будешь иметь, все зависит от тебя, можешь под процент как я работать и иметь от 200к - все зависит от тебя. И конечно же офф трудоустройство)

На сколько ты старше?) Года 3-4?)
На пару лет точно) Мне 20 в этом году, тебе как я помню 17-18 будет, возможно ошибаюсь.
 

test227test227

Опытный
Сообщения
219
Реакции
104

test227test227

  • 219
  • 104
Препод из уника
Думаю твой препод, равно как и все мои, не слишком то и умные. Не в обиду, просто нужно работать с этим каждый день, что бы знать, о чем говоришь)

любую книгу по принципам ООП
Давай что-то повесомей чем "препод" и "книга", например, пример такого кода в хорошем опенсорсном проекте, который до сих пор поддерживают.

В моем случае - зачем кидать в get параметры, они все равно в данном классе всегда одни и те же, при каждом запросе происходит инициализация класса. Возможно это плохая задумка, но если у тебя есть другой способ - жду тебя в лс с твоей реализацией
Нужно больше кода/инфы, из маленького скриншота мало чего понятно)

На пару лет точно) Мне 20 в этом году, тебе как я помню 17-18 будет, возможно ошибаюсь.
Ну вот и я об "пару лет") Мне 17.
 

gamaleev0071

Местный
Сообщения
65
Реакции
10

gamaleev0071

  • 65
  • 10
тема годная , обнови её нормально внеси изменения которые ты делал в первый пост
 
Сверху