Containers in websocket messages

Hi,

i try to write a C# library for handle the "tr_json2" protokoll. Priviously I had writen a C++/cli-wrapper with Realtime C++ API (EMA) to implement a "MarketPrice -Modell" for substituting SFC-COM.

Back to the problem. Realtime C++ API defines a payload at the message-class to handle additional/variant data. In the websocket-api documentation i didn't found specific information wich messages should be to take containers like a payload. Some Messages has explicit implimentations of a container. E.g Post-Message has a Message Container. Most other messages I didn't found explizit informations.

The exakt Question now is: Does only Update-, Status- and Refresh-Message have container(s), or any message (Including Ack-, Close- und Error-Message) could have one or more containers at the top OMM-Level?

Regards,

Reinhold


Best Answer

  • @Reinhold.Blank

    The following is a Post message that contains an Update message.

    {
        "Ack": true,
        "ID": 1,
        "Key": {
            "Name": "{{POST_ITEM}}",
            "Service": "{{POST_SERVICE}}"
        },
        "Message": {
            "Fields": {
                "ASK": 452.60,
                "PRIMACT_1": 451.3,
                "SEC_ACT_1": 451.3,
                "BID": 452.55
            },
            "ID": 0,
            "Type": "Update"
        },
        "PostID": 10,
        "Type": "Post"
    }

    The following is a Post message that contains a Field List container.

    {
        "Ack": true,
        "ID": 1,
        "Key": {
            "Name": "{{POST_ITEM}}",
            "Service": "{{POST_SERVICE}}"
        },
        "Fields": {
            "ASK": 452.60,
            "PRIMACT_1": 451.3,
            "SEC_ACT_1": 451.3,
            "BID": 452.55
        },
        "PostID": 10,
        "Type": "Post"
    }

    These are off-stream post messages that send post messages through the login stream ("ID": 1).

    I sent these post messages to RTDS cache.

    A consumer will retrieve the data in the update message.

    {
            "ID": 3,
            "Type": "Update",
            "UpdateType": "Unspecified",
            "Key": {
                "Service": "DIST_CACHE",
                "Name": "TEST.BK"
            },
            "PostUserInfo": {
                "Address": "0.0.0.0",
                "UserID": 0
            },
            "Fields": {
                "ASK": 452.60,
                "PRIMACT_1": 451.3,
                "SEC_ACT_1": 451.3,
                "BID": 452.55
            }
        }

Answers

  • @Reinhold.Blank

    Thanks for reaching out to us.

    The WebSocket API applies the Refinitiv Open Message Model. The topmost level is a message. Each message contains a payload. A payload can contain another message or a container.

    1674443861893.png

    The usages of messages are defined in the Refinitiv Domain Model. For example, each Refresh and Update message of the Market Price domain contains a Field List in its payload.

    1674444746896.png

    Therefore, you need to follow the specifications defined in the Refinitiv Domain Model. Typically, the Close and Ack messages don't use payload.

  • Hello @Reinhold.Blank

    You can find the Refinitiv Domain Model resources in the following documents:


  • Hi again,

    thanks for the quick responce. Please can sombody show me by a JSON example, that explains the differnce between a message that contains an other message as payload and a message that have a message-container taking a message as payload. May could be the first one a post-message?

  • Fine, thank you