фильтровать объект / значение json из websocket и печатать в журнал консоли - PullRequest
0 голосов
/ 25 апреля 2019

Попытка печати в консоль журнала значения из данных json, предоставленных веб-сокетом

Приведенный ниже код печатает все данные json из веб-сокета в журнал консоли.

// require ws
const WebSocket = require('ws');


//messsage sent to  ws server
var msg = 
    {"jsonrpc": "2.0",
     "method": "public/subscribe",
     "id": 42,
     "params": {
        "channels": ["deribit_price_index.btc_usd"]}
    };

// WS connection url
var ws = new WebSocket('wss://test.deribit.com/ws/api/v2');

//ws response
ws.onmessage = function (e) {

    // do something with the notifications...

    console.log('server : ', e.data);

};

//stringify json data
ws.onopen = function () {
    ws.send(JSON.stringify(msg));
};

Ожидаемый результат:

server :  5457.21

server :  5457.19

server :  5457.15

Фактический результат:

server :  {"jsonrpc":"2.0","method":"subscription","params":{"channel":"deribit_price_index.btc_usd","data":{"timestamp":1556209117657,"price":5457.21,"index_name":"btc_usd"}}}
server :  {"jsonrpc":"2.0","method":"subscription","params":{"channel":"deribit_price_index.btc_usd","data":{"timestamp":1556209117657,"price":5457.19,"index_name":"btc_usd"}}}

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

JSON.parse()

Вот как это можно использовать:

    //This will turn it into an object you can navigate with '.params.data.price'
    try {
        console.log('server: ', JSON.parse(e.data).params.data.price);
    } catch {}
0 голосов
/ 25 апреля 2019

Вы регистрируете все в e.data.

Из фактического результата JSON, похоже, что вы хотите e.data.params.data.price

Как сказал Робофан, сначала нужно разобрать его.

console.log('server : ', e.data); -> console.log('server : ', JSON.parse(e).params.data.price);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...