For a deeper look into our Elektron API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles


vaibhav.sahu.2 avatar image
3 0 1 3

Regarding data compression request in CSharp Simplified streaming API


I am using Csharp MarketPriceExample of EAP (Early Aceess Program) -> TR's Simplified Streaming API. I am aware that we can enable data compression in Simplified API .(i.e. permessage-deflate compression ) . I have a question regarding how we can request compressed data in CSharp MarketPriceExample ?

Look Like CSharp example is using open source websocketsharp dll. I had a look into websocket-sharp dll document for compression here ->


"As a WebSocket client, if you would like to enable this extension, you should set the WebSocket.Compression property to a compression method before calling the connect method. ws.Compression = CompressionMethod.Deflate;

And then the client will send the following header in the handshake request to the server. Sec-WebSocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover "

Anyhow i am not able to set the header while requesting data from simplified streaming ?

Could you please suggest how we can add that compression request part in MarketPriceExample code for Simplified Streaming ?

10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

jim.carroll avatar image
361 1 4 3

Hi Vaibhav,

WebSocketSharp only supports compression without a compression context (where compression of previous messages does not affect how future messages are compressed). It therefore includes the 'no-context-takeover' extension parameters in the request.

The ADS uses a context when sending messages to achieve better compression. Accordingly it does not echo back the request for no-context-takeover. We may add support for compression without a context in a future release.

10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hi jim,

Thanks for your reply. I am interested to see how to add header using websocketSharp in C#.

so far doing like below

private WebSocket _webSocket;


//Creating new websocket

_webSocket = newWebSocket(hostString, "tr_json2");


//Setting compression enable

_webSocket.Compression = CompressionMethod.Deflate;


//Anyhow not sure how to set header using websocketsharp


Sec-WebSocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover


//calling connect later on


Hi Vaibhav,

Could be wrong, but I don't think WebSocketSharp has a way to add custom Websocket extension parameters. WebSocketSharp automatically adds the "no-context-takeover" header when compression is enabled (and then it closes the connection since the ADS did not echo it back).

Thanks a lot Jim .. We might raise this with TR to see if they can add compression without a context in a future release