【发布时间】:2019-07-05 15:39:43
【问题描述】:
我正在尝试为加密货币代码创建一个监视列表您输入一个代码,添加它,它会以表格格式向您显示实时价格。
我的第一步是尝试与 Kraken websocket API 建立握手连接(此处的文档:https://www.kraken.com/features/websocket-api#connectionDetails)
我的问题: 目前,我想要做的就是能够在我与 Kraken 的 websocket API(加密交换)连接时记录“连接成功”。我正在尝试通过以下部分执行此操作(一直向下滚动以查看所有代码)
socket.onopen = function(event) {
socketStatus.innerHTML = 'Connected to: ' + event.currentTarget.url;
socketStatus.className = 'open';
};
我有一个 index.html 文件和一个 app.js 文件。当我在 chrome 中打开 index.html 文件时,出现错误:
app.js:5 WebSocket 连接到“ws://ws-sandbox.kraken.com/”失败:WebSocket 握手期间出错:意外响应代码:521
我只用这行代码尝试了 websocket 相关的东西
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')
在文档中,您将看到连接详细信息。沙盒环境的连接详细信息。网址是 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';
};
})
【问题讨论】:
标签: javascript websocket get handshake