MLinkStream contains an ActiveLantency field that governs subsequent updates after the initial (cache) query. If this field is set to 0 then the user is required to send a SignalReady message which will trigger the MLinkServer to send an update (if any) to all response messages.

MLinkSignalReady

Field NameField TypeDescription
sessionIDshort(optional) actions below apply only to the sessionID virtual session; should be zero for non-multiplexed web-socket connections.
signalIDGroupingCode(optional) will be reflected back in xCheckPt.signalID fields that indicates that a specified signal ready triggered active send is complete.
readyScanenum(optional; default is Incremental) Incremental = messages w/changes (all fields; cumulative changes) since previous MLinkSignalReady; FullScan = all messages.

Note:

  • It is possible for the MLinkServer to have received multiple updates to a single Primary Key between successive SignalReady messages. If this occurs, only the most recent record update will be forwarded to the client.
  • If activelyLatency is set to any integer N greater than or equal to zero, it will have the effect of automatically triggering the transmission of any pending updates every N milliseconds, with zero being interpreted as no delay.
  • If the client system is unable to process messages at the speed with which they are being sent, MLinkServer will fall back to sending messages at the rate the client is able to receive, which will also result in some messages being skipped in favor of more recent updates.

MLinkSignalReady and LiveImpliedQuoteAdj stream

The underlier-adjusted version of LiveImpliedQuote records used in parallel with MLinkSignalReady allow users to recalculate surfaces on demand. All records returned by the MLinkServer will be adjusted for the latest underlying price for each specific ticker.

After opening up a connection and setting the activeLatency to 0, users can send a series of MLinkSignalReady messages with a readyScan of FullScan to generate an underlier-adjusted response. With a reasonable interval time between each, users can actively sample the LiveImpliedQuoteAdj message.

The following 2 message requests allow for this:

SignalReady (Should be sent in intervals through the same connection)

signal = {
            "header": {
                "mTyp": "MLinkSignalReady"
            },
            "message": {
                "readyScan": "FullScan" #[readyScan:enum:ReadyScan:None=0,Incremental=2,FullScan=3]  
            }
        }

MLinkStream

msg = {
                    "header": {
                        "mTyp": "MLinkStream"
                    },
                    "message": {
                        "queryLabel": "ExampleImpliedQuoteAdj",
                        "activeLatency": 0, #wait for Signal ready
                        "msgName": "LiveImpliedQuoteAdj", 
                        "where":"ticker:eq:AAPL-NMS-EQT" #can also do ticker.tk:eq:AAPL & ticker.at:eq:EQT & ticker.ts:eq:NMS
                    }
                }

Please refer to client-python\JSONFramed\examples\clientSignalReady.py for further examples.