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

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles

question

Upvotes
Accepted
3 0 1 3

Regarding data compression request in CSharp Simplified streaming API

Hi

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 -> https://github.com/sta/websocket-sharp#per-message-compression

i.e.

"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 ?

treprdp-apiapiwebsocketsrrtoc#eap
icon clock
10 |1500

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

1 Answer

Upvotes
Accepted
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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.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

(i.e.

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

)

//calling connect later on

_webSocket.Connect();

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

Click below to post an Idea Post Idea