[英]how to stop a stream api in callback nodejs
嗨,我正在使用 binance api,它有一個 stream function,如下所示,我不知道在 if 語句為真后如何停止它。
binance.websockets.bookTickers("BNBUSDT", (res) => {
if (res.bestAsk > 250) {
// i want to finish this stream here
}
});
運行結果是這樣的:
{
updateId: 4510982,
symbol: 'BNBUSDT',
bestBid: '276.10010000',
bestBidQty: '0.24000000',
bestAsk: '277.77770000',
bestAskQty: '0.99000000'
}
(always running - infinite loop)
謝謝。
從上下文中我看到您正在使用binance-node-api 。
不幸的是,他們的代碼沒有取消訂閱特定 websocket stream 的方法。
bookTickets
stream 是在第 5755 行創建的。 如果它的處理程序被保存到某處的(可訪問的)變量中,您可以調用它的方法.close()
來關閉 stream。 但...bookTickers
function之外,目前沒有辦法關閉stream。最簡單的方法是在不需要數據時立即開始忽略 stream。 缺點當然是你在不需要的東西上浪費資源,並且打開你的應用程序有更多潛在的故障(如果 stream 拋出錯誤或導致 memory 泄漏怎么辦?)。
const Binance = require('node-binance-api');
const binance = new Binance();
let isTickersProcessed = false;
const websocket = binance.websockets.bookTickers("BNBUSDT", (res) => {
if (isTickersProcessed) {
return;
}
if (res.bestAsk > 250) {
console.log(res);
isTickersProcessed = true;
}
});
或者使用不同的包裝器模塊,讓您更好地控制流。 或者直接使用websocket
連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.