question

Upvotes
Accepted
3 3 3 4

Keeping socket open beyond access token expiry time

Hi

As soon as I connect to the websocket API I send a Login message with the access token which I got from the auth server. This works, I get a Login Refresh response and I can then subscribe to market updates.

This token expires at 5 minutes, at which case I imagine I need to refresh it, otherwise I get a token expired message.

Using the same process (and the same refresh token I had earlier) I get a new access token and send the same Authentication message. I do this 30 seconds before the expiry time of the first access token. The server responds nothing and later drops the connection.

treprdp-apiwebsocketsrrtoauthentication
icon clock
10 |1500

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

Upvote
Accepted
27.6k 67 18 14

Hello @stefanos

The re-refresh JSON Login message needs a "Refresh": false parameter-value. The first JSON Login does not need a "Refresh" parameter.

The re-refresh JSON Login request also will not receive a Login Refresh message from ERT in Cloud WebSocket server. Once the server accepts a re-login request message, all current streams will continue as usual.

First Login:

{
   "ID":1,
   "Domain":"Login",
   "Key":{
      "NameType":"AuthnToken",
      "Elements":{
         "ApplicationId":"<your app id>",
         "Position":"<your position>",
         "AuthenticationToken":"<your access token>"
      }
   }
} 

Re-Refresh Token re-Login:

{
   "ID":1,
   "Domain":"Login",
   "Key":{
      "NameType":"AuthnToken",
      "Elements":{
         "ApplicationId":"<your app id>",
         "Position":"<your position>",
         "AuthenticationToken":"<your new access token>"
      }
   },
   "Refresh": false
} 

You can find an example code in Python from the "ELEKTRON REAL TIME IN CLOUD" section example download page.


code.png (35.1 KiB)
icon clock
10 |1500

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

Upvotes
27.6k 67 18 14

Hello @stefanos

could you please give me your re-refresh token request message? Basically, the re-refresh token request mesage structure is different from access token request message. The re-refresh token request message need to set a "grant_type" parameter as "refresh_token", not "password" as access token request message.

Re-refresh token request:

{
   "username":"<username>",
   "refresh_token":"<your current refresh_token>",
   "grant_type":"refresh_token",
   "takeExclusiveSignOnControl": True
}

Access token request:

{
   "username": "<username">,
   "password": "<your password>",
   "grant_type":"password",
   "takeExclusiveSignOnControl":True,
   "scope":"<your scope>"
}

If the problem still persist even you have changed a re-refresh token request message, plesae give me the following information:

  • You username/machine id
  • The EDP authentication URL that you sends request messages to
  • You authentication and re-refresh token post request messages (please remove your password from the message)
icon clock
10 |1500

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

Upvotes
3 3 3 4

Hi @Wasin Waeosri

I'm talking about the web socket login

The first message I sent is this (auth token hidden)
{"Domain":"Login","ID":1,"Key":{"NameType":"AuthnToken","Elements":{"ApplicationId":"256","Position":"127.0.1.1","AuthenticationToken":"eyJ0e...Wnb2A"},"Name":"CopyDo"},"Refresh":false}

This works fine and I can then subscribe to markets and receive market price updates

In 4.30 minutes I send a new auth message like this:

{"Domain":"Login","ID":3,"Key":{"NameType":"AuthnToken","Elements":{"ApplicationId":"256","Position":"127.0.1.1","AuthenticationToken":"eyJ0e...WDLoQ"},"Name":"CopyDo"},"Refresh":true}

The only difference is that I set Refresh: true

The authentication token is brand new, taken using the same refresh token that I used to get the first auth token

icon clock
10 |1500

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

Upvotes
3 3 3 4
icon clock
10 |1500

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

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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