我有此代码:
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
}
}
}
}
但是它会在一段时间后关闭。我如何使其始终运行? 我以为应该通过关闭重新启动来工作,但不能正常工作。
答案 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。