sgcWebSockets Enterprise v4.4.4 for D7-D10.4 Sydney Full Source
sgcWebSockets Enterprise v4.4.4 for D7-D10.4 Sydney Full Source
sgcWebSockets is a complete package providing access to WebSockets protocol, allowing to create WebSockets Servers, Intraweb Clients or WebSocket Clients in VCL, Lazarus/FPC and Firemonkey applications. WebSocket is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. The WebSocket protocol was standardized by the IETF as RFC 6455 in 2011. WebSocket is designed to be implemented in web browsers and web servers, but it can be used by any client or server application. The WebSocket protocol makes possible more interaction between a browser and a web site, facilitating live content and the creation of real-time game.
Fully functional multithreaded WebSocket server according to RFC 6455.
Supports Firemonkey (Windows, MacOS, iOS and Android).
Supports Linux 64.
Supports Lazarus / FreePascal.
Supports CBuilder.
Supports C# .NET through sgcWebSockets.dll
Supports Chrome, Firefox, Safari, Opera and Internet Explorer (including iPhone, iPad and iPod)
Binary and Full Unicode Messages Support
Message compression using PerMessage_Deflate extension.
Flash FallBack for Web Browsers without native WebSockets (like Internet Explorer 6-9).
Multiple Threads Support
Server component providing WebSocket and HTTP connections through the same port.
Client WebSocket supports connections through Socket.IO Servers.
Client WebSocket supports connections through HTTP Proxy Servers.
WatchDog and HeartBeat built-in support.
Events Available: OnConnect, OnDisconnect, onmessage, onerror
Built-in sub-protocols: JSON-RPC 2.0(Transactional Messages, PubSub, RPC, Queues, QoS and more), MQTT, Datasets, Binary Files, WebRTC and WAMP.
Built-in jР°vascript libraries to support browser clients.
Easy to setup
jР°vascript Events for a full control
Async Events using Ajax
SSL/TLS support on Server and Client components
MORE ABOUT OUR VALUE
Custom Objects
Every time a new WebSocket connection is established, sgcWebSockets creates a TsgcWSConnection class where you can access to some properties like identifier, bytes received/sent, client IP... and there is a property called Data where you can store objects in memory like database access, session objects...
Basic
implements Basic Access Authentication, only applies to VCL Websockets (Server and Client) and HTTP Requests (client webbrowsers don't implement this type of authentication). When a client tries to connect, it sends a header using AUTH BASIC specification.
Secure Connections
SSL support is based on Indy implementation, so you need to deploy openssl libraries in order to use this feature. In Compiled Demos file, there is a directory called Third-Parties/ openssl, where you can find the libraries need for every Delphi Version.
Compression
This is a feature that works very well when you need to send a lot of data, usually using a binary message, because it compresses WebSocket message using protocol "PerMessage_Deflate" which is supported by some browsers like Chrome.
Bindings
Usually Server have more than one IP, if you enable a WebSocket Server and set listening port to 80, when server starts, tries to listen port 80 of ALL IP, so if you have 3 IP, it will block port 80 of each IP's.
Bindings allows to define which exact IP and Port are used by the Server. Example, if you need to listen on port 80 for IP 127.0.0.1 (internal address) and 80.254.21.11 (public address).
Quality of Service (QoS)
SGC Default Protocol implements a QoS (Quality of Service) for message delivery, there are 3 different types:
Level 0: "At most once"
where messages are delivered according to the best efforts of the underlying TCP/IP network. Message loss or duplication can occur. This level could be used, for example, with ambient sensor data where it does not matter if an individual reading is lost as the next one will be published soon after.
Level 1: "At least once"
where messages are assured to arrive but duplicates may occur.
Level 2: "Exactly once"
where message are assured to arrive exactly once. This level could be used, for example, with billing systems where duplicate or lost messages could lead to incorrect charges being applied.
Queues
SGC Default Protocol implements Queues to add persistence to published messages (it's only available for Published messages)
Level 0
Messages are not queued on Server
Level 1
only last message is queued on Server, and is sent every time a client subscribes to a new channel or connects to server.
Level 2
All messages are queued on Server, and are sent every time a client subscribes to a new channel or connects to server.
Transactions
sgcWebSockets SGC Protocol supports transactional messaging, when a client commits a transaction, all messages sent by client are processed on server side. There are 3 methods called by client
StartTransaction
Creates a New Transaction on server side and all messages that are sent from client to server after this method, are queued on Server side, until client calls to Commit or Rollback
Commit
When a client calls to commit, all messages queued by server are processed.
RollBack
When a client calls to RollBack, all messages queued by server are deleted and not processed on server side.
HTTP
TsgcWebSocketHTTPServer is a component that allows to handle WebSocket and HTTP connections using the SAME port. Is very useful when you need to setup a server where only HTTP port is enabled (usually 80 port). This component supports all TsgcWeBSocketServer features and allows to serve HTML pages.
You can serve HTML pages statically, using DocumentRoot property, example: if you save test.html in directory "C:\inetpub\wwwroot", and you set DocumentRoot to "C:\inetpub\wwwroot". If a client tries to access to test.html, it will be served automatically, example:
http://localhost/test.html
Or you can serve HTML or other resources dynamically by code, to do this, there is an event called OnCommandGet that is fired every time a client requests a new HTML page, image, jР°vascript file...
Throttle
Bandwidth Throttling is supported by Server and Client components, if enabled, can limit the amount of bits per second sent/received by socket. Indy uses a blocking method, so if a client is limiting its reading, unread data will be inside client socket and server will be blocked from writing new data to client. As much slower is client reading data, much slower is server writing new data.
Server-Sent Events
SSE are not part of WebSockets, defines an API for opening an HTTP connection for receiving push notifications from a server.
SSEs are sent over traditional HTTP. That means they do not require a special protocol or server implementation to get working. In addition, Server-Sent Events have a variety of features that WebSockets lack by design such as automatic reconnection, event IDs, and the ability to send arbitrary events.
HeartBeat
On Server components, automatically sends a ping to all active WebSocket connections every x seconds.
On Client components, automatically sends a ping to server every x seconds.
WatchDog
On Server components, automatically restart server after unexpected disconnection.
On Client components, automatically reconnect to server after unexpected disconnection.
Proxy
Client WebSocket components support WebSocket connections through proxies
LoadBalancing
Load Balancing allows to distribute work between several back-end servers, every time a new client request a connection, it connects to a load balancer server (which is connected to back-end servers) and returns a connection string with information about host, port... which is used by client to connect to a server. If you have for example 4 servers, with this method all servers will have, more or less, the same number of connections, and work load will be similar.
If a client want to send a message to all clients of all servers, just use broadcast method, and this message will be broadcast to all servers connected to Load Balancer Server.
FallBack
Web Browsers without WebSockets support, can use Flash to connect to WebSocket Server (example: Internet Explorer from version 6 to 9).
If Flash is not enabled, then tries to connect using Server-Sent Events + XHR.
4.4.4: 2020 November
[+] : New Component TsgcHTTPGoogleCloud_Calendar_Client, allows to use Google Calendar API V3: get Calendars, events, synchronize with your own calendar...
[+] : New Demo GoogleCalendar which shows the main features of Google Calendar Client.
[+] : New method "PublishAndWait" in MQTT Client, this method allow to publish a message using mtqsAtLeastOnce or mtqsExactlyOnce and wait till message is processed by server.
[+] : New method "SendAndWait_DeviceToCloud" in Azure IoT MQTT Client, sends a message from device to cloud and wait till server processes the request.
[+] : New Property Authentication in TsgcHTTP2Client, allows to send HTTP/2 Requests using OAuth2 protocol as authentication.
[+] : Improved HTTP/2 Server, ping and heartbeat are now supported.
[+] : Improved Google PubSub client, new Events "OnAuthToken" and "OnAuthTokenError" allows to handle the OAuth2 event flow.
[+] : Improved Google PubSub client, new Method "RefreshToken" allows to reconnect to an OAuth2 session.
[+] : Improved Telegram Client, added support for proxies: HTTP, MTProto and Socks5. New methods to Add Proxies, Remove, Enable, Disable...
[+] : New method "Restart" in Server Components, restart the server in a secondary thread.
[+] : Improved WatchDog on Server components, a new property called Monitor, if enabled, a client will try to connect to server, if fails after the TimeOut set, the server is restarted automatically.
: Fixed Bug TsgcWebSocketClient and TLSOptions.IOHandler = iohSChannel, when closing connection an exception 10004 was shown.
: Fixed Bug TsgcWebSocketClient and TLSOptions.IOHandler = iohSChannel, when destroying TsgcWebSocketClient if connection was active, a thread-lock occurs.
: Fixed Bug Azure IoT MQTT Client, OnMQTTPubAck wasn't be called when client receives an acknowledgement from server.
: Fixed Bug Server connections wasn't closed if OriginsAllowed not match the websocket origin client.
: Fixed Bug ServerSentEvent jаvascript code, contains invalid text.
: Fixed Bug compiling Custom Indy version, sgcIdStackVCLPosix was using IdCTypes instead of sgcIdCTypes.
: Fixed Bug HeartBeat, if there was an exception sending a ping, exception was not captured and was shown to user.
: Fixed Bug MQTT Client, if there was an exception while resending a message with Qos <> mtqsAtLeastOnce, exception was not captured and was shown to user.
: Fixed Bug MQTT Client, when publishing a Stream with Qos <> mtqsAtLeastOnce and not received an acknowledgment from server before timeout, when resend the message, payload was empty.
: Fixed Memory Leaks on Server Component when HTTP/2 is enabled.
: Fixed Bug HTTP/2 when the other peer send a InitialWindowSize settings update.
: Fixed Bug HTTP/2 Client, if during a Synchronous HTTP Request, there was a disconnection, client didn't stop wait a result.
: Fixed Bug HTTP/2 Server, if SETTINGS_INITIAL_WINDOW_SIZE was changed after HEADERS, the WindowSize was not adjusted properly.
: Fixed Bug Binance Spot User Stream API, if there was an error deleting internal ListenKey after a disconnection, the field was not cleared and can't reconnect.
: Fixed Bug WatchDog on Server Components, if the server was stopped manually, the WatchDog try to start server again instead of stop.
: Fixed Bug compiling sgcJSON_XSuperObject and sgcJSON_System with Delphi 10.4
: Fixed Bug WebSocket Indy Servers, if Options.ReadTimeOut = 0 the server make use of full cpu. Now the minimum value for ReadTimeOut = 1
: Fixed Bug Websocket Indy Servers, if server send a close packet and it's not received/processed by other peer, the connection make use of full cpu.
[/] : TsgcHTTP2Client HTTP/2 Asynchronous methods, now are renamed to GetAsync, PostAsync, PutAsync...
[/] : Demos now are grouped by categories.
[+] : New Component TsgcHTTPGoogleCloud_Calendar_Client, allows to use Google Calendar API V3: get Calendars, events, synchronize with your own calendar...
[+] : New Demo GoogleCalendar which shows the main features of Google Calendar Client.
[+] : New method "PublishAndWait" in MQTT Client, this method allow to publish a message using mtqsAtLeastOnce or mtqsExactlyOnce and wait till message is processed by server.
[+] : New method "SendAndWait_DeviceToCloud" in Azure IoT MQTT Client, sends a message from device to cloud and wait till server processes the request.
[+] : New Property Authentication in TsgcHTTP2Client, allows to send HTTP/2 Requests using OAuth2 protocol as authentication.
[+] : Improved HTTP/2 Server, ping and heartbeat are now supported.
[+] : Improved Google PubSub client, new Events "OnAuthToken" and "OnAuthTokenError" allows to handle the OAuth2 event flow.
[+] : Improved Google PubSub client, new Method "RefreshToken" allows to reconnect to an OAuth2 session.
[+] : Improved Telegram Client, added support for proxies: HTTP, MTProto and Socks5. New methods to Add Proxies, Remove, Enable, Disable...
[+] : New method "Restart" in Server Components, restart the server in a secondary thread.
[+] : Improved WatchDog on Server components, a new property called Monitor, if enabled, a client will try to connect to server, if fails after the TimeOut set, the server is restarted automatically.
[/] : TsgcHTTP2Client HTTP/2 Asynchronous methods, now are renamed to GetAsync, PostAsync, PutAsync...
[/] : Demos now are grouped by categories.
Only for V.I.P
Warning! You are not allowed to view this text.