保持币安期货WSS的生命

时间:2020-04-23 16:47:42

标签: sockets websocket bitcoin trading binance

我有此代码:

startWss();
function startWss(){
let  wsBinance = new WebSocket('wss://stream.binancefuture.com/stream?streams=btcusdt@bookTicker', { 
    apiKeyID: testApiKeys[0], 
    apiKeySecret: testApiSecrets[0] 
});

if(wsBinance){
    wsBinance.on('error', () => { console.error });
    wsBinance.on('open', () => { console.log('Connection opened bookTicker.') } );
    wsBinance.on('close', function () {
        startWss();
        console.log('Connection closed bookTicker.');
    } );
    wsBinance.on('initialize', () => console.log('Client initialized, data is flowing.' ));
    wsBinance.onmessage = e => {

        let dataJson = JSON.parse(e.data)
        if(dataJson.data){
            priceA= dataJson.data.b
            priceB= dataJson.data.a
        }
    }
}

}

但是它会在一段时间后关闭。我如何使其始终运行? 我以为应该通过关闭重新启动来工作,但不能正常工作。

1 个答案:

答案 0 :(得分:0)

您可能需要定期对服务器进行ping操作(或发送pong以响应ping操作),以指示连接仍然​​有效。

了解这是在连接级别而不是应用程序级别(即,这不是Binance给出的流路径的一部分,而是在websocket级别本身)

代码将取决于您选择的websocket框架:有些可能会自动处理ping并发出pong,但在您的框架中可能不会发生。

基本上,从服务器接收到Ping后(请检查事件处理程序以识别此情况),您将需要发送回“ Pong”,可能具有与ping帧中发送的有效载荷相同的值。

有关此内容的RFC,请参见https://tools.ietf.org/html/rfc6455#section-5.5.3。乒乓的操作码是0xA。