WebSocket“消息”,只有一个结果在流中

时间:2018-12-08 15:55:59

标签: javascript node.js websocket

我正在尝试获取Deribit wss流,但是我仅收到1条传入消息。

不应该ws.on('message'自动更新输入流吗?请告诉我我错了。

谢谢

const WebSocket = require('ws');
const ws = new WebSocket('wss://www.deribit.com/ws/api/v1/');

ws.on('open', function open() {
    var args = {
        "instrument": "BTC-PERPETUAL",
        "depth": "1L",
    };
    var obj = { 
        "id": 5232,
        "action": "/api/v1/public/getorderbook",
        "arguments": args,
        //sig: restClient.generateSignature("/api/v1/private/subscribe", args) 
    };
    console.log('Request object', obj);
    ws.send(JSON.stringify(obj)); 
});

var bData;


ws.on('message', function incoming(data) {

   if(data.length > 0)
     {
        var obj = JSON.parse(data);

        bData = obj;

     }

});




setTimeout(() => {
        setInterval(() => {
           console.log(bData.result.asks[0].price + '   ' + bData.result.bids[0].price );
        }, 150);
}, 2050);

1 个答案:

答案 0 :(得分:0)

getorderbook端点是一次操作,与对REST端点的调用相同。

您应该更清楚地了解要执行的操作,但是我想您想在订单簿上获得连续的更新。为此,您需要subscribe进入主题。

const params = {
  "action": "/api/v1/private/subscribe",
  "arguments": {"event": ["order_book"],
                "instrument": ["BTC-PERPETUAL"]}
}

以下是相关文档:https://docs.deribit.com/rpc-endpoints.html#subscribe