Tradier API websockets 流 node.js 示例没有接收到任何事件
Tradier API websockets stream node.js example is not receiving any events
我有以下每个 this and this 的 nodejs 代码:
const WebSocket = require('ws');
const ws = new WebSocket('wss://ws.tradier.com/v1/markets/events');
request({
method: 'post',
url: 'https://api.tradier.com/v1/markets/events/session',
form: {
},
headers: {
'Authorization': 'Bearer MY_API_KEY_NOT_SHOWN',
'Accept': 'application/json'
}
}, (error, response, body) => {
console.log(response.statusCode);
console.log(body);
let data = JSON.parse(body)
let sessionId = data.stream.sessionid
streamPrice(sessionId)
});
function streamPrice(sessionId){
console.log(sessionId)
ws.on('open', function open() {
console.log('Connected, sending subscription commands...');
ws.send(`{"symbols": ["TSLA"], "sessionid": "${sessionId}", "linebreak": true}`);
});
ws.on('message', function incoming(data) {
console.log(data);
});
ws.on('error', function error(data) {
console.log(data);
});
}
我从创建 Web 套接字会话的 API 请求返回 200 OK
,并且我有一个有效的会话 ID:
200
{"stream":{"url":"https:\/\/stream.tradier.com\/v1\/markets\/events","sessionid":"6ba4158d-8ff8-46c3-b005-***********"}}
6ba4158d-8ff8-46c3-b005-***********
但是,ws.on()
事件永远不会触发。我没有收到任何错误。会话在一段时间后确实关闭,大概是由于不活动。但这并不是我的代码不活动...
我的代码有什么问题/我缺少什么来完成这项工作吗?
我能够自己找出问题所在。问题是我太早打开了 websocket。
我将以下行移到 streamingPrice
范围内而不是全局范围内进行解析。
const ws = new WebSocket('wss://ws.tradier.com/v1/markets/events');
我有以下每个 this and this 的 nodejs 代码:
const WebSocket = require('ws');
const ws = new WebSocket('wss://ws.tradier.com/v1/markets/events');
request({
method: 'post',
url: 'https://api.tradier.com/v1/markets/events/session',
form: {
},
headers: {
'Authorization': 'Bearer MY_API_KEY_NOT_SHOWN',
'Accept': 'application/json'
}
}, (error, response, body) => {
console.log(response.statusCode);
console.log(body);
let data = JSON.parse(body)
let sessionId = data.stream.sessionid
streamPrice(sessionId)
});
function streamPrice(sessionId){
console.log(sessionId)
ws.on('open', function open() {
console.log('Connected, sending subscription commands...');
ws.send(`{"symbols": ["TSLA"], "sessionid": "${sessionId}", "linebreak": true}`);
});
ws.on('message', function incoming(data) {
console.log(data);
});
ws.on('error', function error(data) {
console.log(data);
});
}
我从创建 Web 套接字会话的 API 请求返回 200 OK
,并且我有一个有效的会话 ID:
200
{"stream":{"url":"https:\/\/stream.tradier.com\/v1\/markets\/events","sessionid":"6ba4158d-8ff8-46c3-b005-***********"}}
6ba4158d-8ff8-46c3-b005-***********
但是,ws.on()
事件永远不会触发。我没有收到任何错误。会话在一段时间后确实关闭,大概是由于不活动。但这并不是我的代码不活动...
我的代码有什么问题/我缺少什么来完成这项工作吗?
我能够自己找出问题所在。问题是我太早打开了 websocket。
我将以下行移到 streamingPrice
范围内而不是全局范围内进行解析。
const ws = new WebSocket('wss://ws.tradier.com/v1/markets/events');