Невозможно установить рукопожатие с Public API Websocket для Kraken - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь сделать список наблюдения для тикеров криптовалюты. Вы вводите тикер, добавляете его, и он покажет вам цены в реальном времени в табличном формате.

Мой первый шаг - попытаться установить рукопожатие с помощью API-интерфейса Kraken (документация здесь: https://www.kraken.com/features/websocket-api#connectionDetails)

Мой запрос: На данный моментвсе, что я хочу сделать, - это иметь возможность вести консольный журнал «успешное соединение», когда я подключаюсь к API веб-сокета от Kraken (криптообмен). Я пытаюсь сделать это через часть ниже ( scrollвплоть до просмотра всего кода )

  socket.onopen = function(event) {
  socketStatus.innerHTML = 'Connected to: ' + event.currentTarget.url;
  socketStatus.className = 'open';
};

У меня есть файл index.html и файл app.js. Когда я открываю файл index.html в chrome, Я получаю сообщение об ошибке:

app.js: 5 Сбой подключения WebSocket к «ws: //ws-sandbox.kraken.com/»: Ошибка при рукопожатии WebSocket: Неожиданный код ответа: 521

Я пытался использовать только эту строку кода для вещей, связанных с веб-сокетами

var socket = new WebSocket('ws://ws-sandbox.kraken.com')

Я также пытался использовать метод get, приведенный в примерах здесь https://medium.freecodecamp.org/here-is-the-most-popular-ways-to-make-an-http-request-in-javascript-954ce8c95aaa

$.get('ws://ws-sandbox.kraken.com',function(data){console.log(`${data}`)})

в моем файле app.js, мой вопрос, кроме строки ниже, что еще мне нужно для успехассалому делать рукопожатие?Нужно ли отправлять запрос GET с информацией заголовка (см. Самый конец)?

var socket = new WebSocket('ws://ws-sandbox.kraken.com')

в документации вы увидите подробности подключения.Детали подключения для среды песочницы.URL-адрес ws-sandbox.kraken.com ссылка: https://www.kraken.com/features/websocket-api#connectionDetails

Я следовал примеру здесь: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket

ПОЛУЧИТЬ ЗАПРОС ВОПРОСА: Я просматривал этот сайт какпример: https://blog.teamtreehouse.com/an-introduction-to-websockets

и он сказал, что мне нужно отправить HTTP-запрос на сервер, используя что-то похожее на это.Я просто не уверен, требуется ли это для того, что я пытаюсь сделать.

GET ws://websocket.example.com/ HTTP/1.1
Origin: http://example.com
Connection: Upgrade
Host: websocket.example.com
Upgrade: websocket

КОД В ФАЙЛЕ APP.JS

$(document).ready(function(){ console.log('page ready')


var socket = new WebSocket('ws://ws-sandbox.kraken.com')

$.get('ws://ws-sandbox.kraken.com',function(data){console.log(`${data}`)})

  var form = document.getElementById('message-form');
  var messageField = document.getElementById('message');
  var messagesList = document.getElementById('messages');
  var socketStatus = document.getElementById('status');
  var closeBtn = document.getElementById('close');

socket.onopen = function(event) { //LOGGING SUCCESSFUL CONNECTION HERE
  socketStatus.innerHTML = 'Connected to: ' + event.currentTarget.url;
  socketStatus.className = 'open';
};
})

1 Ответ

0 голосов
/ 19 августа 2019

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

Так что причина, по которой я нашел эту ошибку, заключалась в том, чтоЯ использовал протокол, который не был поддержан API.Я использовал TLS 1.0, где Kraken API поддерживает только 1.2 / 1.3:

https://support.kraken.com/hc/en-us/articles/360023264371-TLS-upgrade-that-might-affect-your-API-connections

Поэтому, чтобы решить эту проблему, я просто настроил свой клиент websocket на использование TLS 1.2 в качестве протокола.

...