Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Подключение к WebSocket биржи poloniex (https://javascript.ru/forum/node-js-io-js/70618-podklyuchenie-k-websocket-birzhi-poloniex.html)

namazi74 19.09.2017 20:52

Подключение к WebSocket биржи poloniex
 
Добрый вечер.
Хочу получать данные push по wss. Пользуясь их примерами, запускаю код из консоли cmder (предварительно установив node.js и autobahn):
var autobahn = require('autobahn');
var wsuri = "wss://api.poloniex.com";
var connection = new autobahn.Connection({
  url: wsuri,
  realm: "realm1"
});
 
connection.onopen = function (session) {
        function trollboxEvent (args,kwargs) {
                console.log(args);
        }
        session.subscribe('trollbox', trollboxEvent);
}
 
connection.onclose = function () {
  console.log("Websocket connection closed");
}
                       
connection.open();


И как бы я не менял функции и подписки всегда выдается сообщение:
Websocket connection closed

Каким образом можно отловить ошибку? Нужно ли открывать какие-то порты на клиенте для подключения к websocket? Есть ли у кого-то возможность проверить этот код через node.js и подсказать, что не так?
API poloniex лежит тут: https://poloniex.com/support/api/
Пример их реализации: https://pastebin.com/dMX7mZE0
Ещё нашел пример реализации с запуском через html-файл, но от тоже не заработал: https://codepen.io/Anderson-Juhasc/pen/pbOJmN

Audaxviator 20.09.2017 08:28

События open не происходит, нет такого соединения.
Я написал запрос из браузера на этот адрес:
var socket = new WebSocket("wss://api.poloniex.com");
socket.onopen = function() {
  console.log('ok');
}

"Firefox не может установить соединение"
Короче, нет такого адреса. Я так думаю.

namazi74 20.09.2017 08:56

А не может быть такого что сертификат не принимается?

Audaxviator 20.09.2017 09:03

У меня была такая мысль, потому что при GET-запросах https обычно прикручивается ещё строка query типа
http://api.blabla.com/?key=[key]
, но у сокет-соединений, вроде бы, нет такой опции (или я не знаю просто).

А вообще, WebSocket же работает так: сначала браузер посылает запрос по http/https - принимает ли сервер ws/wss? И если получает ответ, что принимает - соединяется по сокету и про http какбэ забывает. Я не знаю, как там всё устроено у этой биржи (или что это).

namazi74 20.09.2017 09:12

Странно, что если push биржи не работает, нигде про это нет ни слова...
Может быть вас натолкнет на мысль такая ошибка:
Когда открываю через браузер и смотрю в консоль разработчика, то выдается ошибка соединения и ссылается на конкретную строку autobahn:
?new b.WebSocket(a._options.url,a._options.protocols):new b.WebSocket(a._options.url);e.binaryType="arraybuffer"}else if("MozWebSocket"in b)e=a._options.protocols?new b.MozWebSocket(a._options.url

Audaxviator 20.09.2017 09:18

Хе. Я набрал в браузере вот так https://api.poloniex.com - там извинения, что пока сервер не работает, попробуйте позже.
Короче, я могу только догадываться, но думаю, что этот модуль, как и браузер, сначала отправляет такой запрос, но ответа не получает - на этом всё заканчивается.

namazi74 20.09.2017 09:33

Спасибо за разъяснения! Думал что неверно настраиваю коннект. По началу валились какие-то данные, но они не соответствовали реальности. А сейчас просто записываются ошибки, иногда проскакивают сделки, но реальные они или нет - не понятно. Написал в саппорт, жду.
Интересно, каким образом агрегаторы с них информацию собирают.


Часовой пояс GMT +3, время: 02:27.