node-js websocket sample market_price.js not working on ads version 3.5.3

We discovered node-js websocket sample market_price.js not working on ads version 3.5.3

Works fine with ads3.2

Also, Python samples work fine with both versions of ads

Thought this may prove useful to help others attempting/struggling with same.

Best Answer

  • Hello @bhavesh.patel2 ,

    I have tested with ADS 3.5. But there may be differences in setup between out testbed and your infrastructure, can not discount this possibility.

    Let us try to verify the behavior, perhaps we can pinpoint the issue with code, or config.

    I also have several versions of websocket examples on my machine, and may not have looked at the most recent of it.

    Is your service named ELEKTRON_AD?

    When I run the script without modification, the error I get is

    RECEIVED:
    [
    {
    "ID": 2,
    "Type": "Status",
    "Key": {
    "Service": 0,
    "Name": "TRI.N"
    },
    "State": {
    "Stream": "Closed",
    "Data": "Suspect",
    "Code": "SourceUnknown",
    "Text": "A18: Unknown service."
    }
    }
    ]

    Is this what you see?

    However, with the modification ( this time will include complete function to be certain:

    function sendMarketPriceRequest()
    {
    var msg = '{"ID":2,"Key":{"Name":"TRI.N", "Service": "ELEKTRON_DD"}}';
    _websocket.send(msg);
    console.log("SENT:");
    console.log(JSON.stringify(JSON.parse(msg), null, 2));
    }

    I get streaming content back. My service is named "ELEKTRON_DD"

Answers

  • Hello @bhavesh.patel2 ,

    Where you see in code node.js example market_price.js :

    var msg = '{"ID":2,"Key":{"Name":"TRI.N"},' + '"Streaming":' + (!snapshot).toString() +'}';

    You may wish to replace with

     var msg = '{"ID":2,"Key":{"Name":"TRI.N, "Service": "YOUR_VALID_SERVICE"},' + '"Streaming":' + (!snapshot).toString() +'}';

    As newer syntax requiring service spec.

    Let us know if this works as expected?

  • Zoya,

    Sorry, that did not work - I replaced with:

    var msg = '{"ID":2,"Key":{"Name":"TRI.N", "Service":"ELEKTRON_AD"},' + '"Streaming":false}';


    again, it works with ADS 3.2 but not 3.5



  • Hello @bhavesh.patel2

    Could you please give us more details about the issue? Does the ADS server return an error message or Is the "Streaming: false" property not working?

    I did a quick test with the market_price.js demo application and the ADS server version 3.5.3 L1.

    function sendMarketPriceRequest()
    {
        //var msg = '{"ID":2,"Key":{"Name":"/EUR="}}';
        var msg = `{"ID":2,"Key":{"Name":"/EUR=", "Service":"ELEKTRON_DD"}, "Streaming": ${false}}`;
        _websocket.send(msg);
        console.log("SENT:");
        console.log(JSON.stringify(JSON.parse(msg), null, 2));
    }

    The demo application gets a snapshot data back as expected.

    SENT:
    {
      "ID": 2,
      "Key": {
        "Name": "/EUR=",
        "Service": "ELEKTRON_DD"
      },
      "Streaming": false
    }
    RECEIVED:
    [
      {
        "ID": 2,
        "Type": "Refresh",
        "Key": {
          "Service": "ELEKTRON_DD",
         


  • Corroborating the previous answers; I just tested the latest NodeJS market price sample with ADS 3.5.3 and was able to get data without any modifications to the sample.

    What is the error message you get?