sgcWebSockets 4.3.0

Improved memory usage and fixed critical bug

Now every connection consumes less memory, so for servers with high concurrent connections, application will use so less memory.

There was a critical bug in server component, if client connection use HTTP 0.9/1.0, connection thread never ends and increase cpu load at max. 

 

Added Authentication support for SignalRCore

Authentication is implemented using Bearer Tokens, client provide an access token and server validates this token and uses it to identify the user.

The following methods are supported

- srcaRequestToken: first request a token using an http connection and if successful, pass token as parameter in websocket connection.

- srcaSetToken: token is already requested from another server and is passed directly in websocket connection.

Read More

 

New API Kraken

Kraken WebSockets Public API offers real-time market data updates. WebSockets is a bidirectional protocol offering fastest real-time data, helping you build real-time applications.

Read More

 

Changes included

 [+] : Added support for OSX64 in Delphi 10.3.2

 [+] : New Client API TsgcWSAPI_KRAKEN, is a US-based cryptocurrency exchange.

 [+] : Added Support for Authentication using Tokens in SignalRCore API. Client demo has been updated to show how works.

 [+] : New Event OnUnknownAuthorization in TsgcWebSocketServer and TsgcWebSocketServerHTTP. Allows to handle authorization requests like bearer tokens.

 [+] : Added support for TLS 1.3 when SChannel is selected.

 [+] : New event, OnHTTPRequest in TsgcWSAPI_SocketIO, allows to add custom headers to HTTP request to get session id.

 [+] : New Property Parameters in TsgcWSAPI_SocketIO, allows to set connection parameters.

 [+] : Improved TsgcWSAPI_SocketIO, if server sets pingInterval greater than zero and HeartBeat is not enabled, now HeatBeat is enabled automatically using server parameters.

 [+] : New Property "IOHandler" in TsgcIoTAmazon_MQTT_Client and TsgcIoTAzure_MQTT_Client, allows to select OpenSSL or SChannel.

 [+] : ThreadPoolSize of TsgcWebsocketServer_HTTPAPI now can be greater than 64.

 [+] : Improved speed detecting if protocol is registered when broker component is attached.

 [+] : Improved speed reading JSON Message in Server Protocols, some unneeded locks have been removed.

 [+] : New field QueryParams in THttpServerRequest of HTTP API Server.

 [+] : New field Cookies in THttpServerRequest of HTTP API Server.

 [+] : New Event OnCommandRequest on TsgcWSServer_HTTPAPI_WebBrokerBridge component, when server gets a new http request, this event is called and here you can customize http response.

  

 [*] : Fixed Bug allocating an unnecessary array when creating a new TsgcWSConnection.

 [*] : Fixed Bug in TsgcWebsocketServer_HTTPAPI, there was a memory leak destroying HTTP connection.

 [*] : Fixed Bug TsgcWebSocketHTTPServer if client connection uses HTTP 0.9/1.0, connection thread never ends and increase cpu load (Thanks to Boris to let me know).

 [*] : Fixed Bug SGC Server Protocol, if PubRel message does not exists, discard message and inform to client.

 [*] : Fixed Bug, if SetAuthenticationCloseCode was called, close code was not sent if Options.CleanDisconnect = False;

 [*] : Fixed Bug compiling Lazarus for Linux, sgcWebSockets_Resources.ppu file not compatible.

 [*] : Fixed Bug sgcWebSocket_Server_WebBrokerBridge unit reference to a incorrect indy unit.

 [*] : Fixed Bug SignalRCore API, ConnectionId was not assigned properly and left empty.

 [*] : Fixed Bug SignalRCore API, if TLS was selected, TLSVersion from websocket client was not used for HTTPs connections and always use default version.

 [*] : Fixed Bug SocketIO API, if no active internet connection, exception was not catched.

 [*] : Fixed Bug Server Protocol Components, when server has high load, sometimes parameters as reference become corrupted.

 [*] : Fixed Bug Client Protocols when calling from different threads, json messages were corrupted.

 [*] : Fixed Bug Client SGC Protocol, acknowledgment with qosLevel2 were not processed.

 [*] : Fixed Bug Dataset Protocol, synchronize method was not processed if ApplyUpdates = False.

 [*] : Fixed Bug TsgcWSServer_HTTPAPI_WebBrokerBridge, if url has parameters, webpage was redirected to default page.

 [*] : Fixed Bug TsgcWebsocketServer_HTTPAPI, request didn't set any value in Headers parameter.

 [*] : Fixed Bug Reading Bytes with Indy components, reading large amount of bytes, sometimes socket hangs.

 [*] : Fixed Bug reading fragmented messages.

 

 [/] : TsgcNotifyObject renamed to TsgcWSNotifyObject

 [/] : TsgcObjectList renamed to TsgcWSObjectList

 [/] : Request object of TsgcWebsocketServer_HTTPAPI, now has QueryParams, Document now doesn't includes query parameters.