gpt4 book ai didi

javascript - Node : Not receiving events after websocket reconnect

转载 作者:搜寻专家 更新时间:2023-10-31 23:23:18 26 4
gpt4 key购买 nike

我的 node-js 应用程序使用 bitfinex-api-node npm 包建立 websocket 连接以从 Bitfinex 加密货币交易所接收数据。

不幸的是,几个小时后连接悄无声息地中断,应用程序停止通过 websocket 接收数据。这似乎是一个已知问题,可能是 bitfinex-api-module 的错误。

现在,我试图通过首先连接 websocket 并订阅一些蜡烛数据来“手动”重新连接。然后调用 websocket.close() 函数来模拟运行时的连接错误。在 on close 函数中,我设置了另一个超时并尝试创建一个新的 BFX() 对象并 open() 它但是 .on(open) 永远不会被调用。

=> 我一定是做错了什么。我的逻辑有错误吗?有没有更好的重新连接方法?

以下代码有效,只需复制粘贴并运行即可。我非常感谢任何提示或提示。

const BFX = require('bitfinex-api-node');

//websocket
const opts = {
manageCandles: true,
transform: true,
API_KEY: 'hidden',
API_SECRET: 'hidden',
ws: {
autoReconnect: true,
seqAudit: true,
packetWDDelay: 10 * 1000
}
};
var websocket = new BFX().ws(2, opts);

websocket.on('open', () => {
//websocket.auth.bind(websocket)
console.log('.on(open) called');
websocket.subscribeCandles('trade:5m:tBTCUSD')
});

websocket.on('close', ()=>{
console.log('.on(close) called');
setTimeout(function() {
websocket = new BFX().ws(2, opts);
websocket.open();
}, 10000);
});

websocket.onCandle({key: 'trade:5m:tBTCUSD'},(candles) => {
console.log(candles[0]);
})

websocket.open();

// this closes the connection after 20 seconds
//after start for debugging purposes:
setTimeout(function() {
websocket.close();
}, 10000);

最佳答案

问题是当前一个关闭时,您没有将任何监听器附加到新的 websocket 实例:

websocket.on('close', ()=>{
console.log('.on(close) called');
setTimeout(function() {
// this creates a new instance without listeners
websocket = new BFX().ws(2, opts);
websocket.open();
}, 10000);
});

当你第一次初始化 websocket 时,你添加它们:

websocket.on('open', /* code */);
websocket.onCandle(/* code */);

为了解决这个问题,我建议编写一个函数来创建和配置一个新的 websocket 实例:

function createWebsocket() {
const websocket = new BFX().ws(2, opts);
websocket.on('open', /* code */);
websocket.onCandle(/* code */);
websocket.open();
}

并在 on('close') 中调用它:

websocket.on('close', ()=>{
console.log('.on(close) called');
setTimeout(createWebsocket, 10000);
});

关于javascript - Node : Not receiving events after websocket reconnect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48932483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com