sgcWebSockets compared with Chilkat

A source-cited comparison for Delphi and C++ Builder developers weighing the two. Every Chilkat statement below is quoted or drawn from a Chilkat page, linked in the Sources table, and was checked on 6 September 2026 against Chilkat version 11.6.0 (released 4 September 2026). Every sgcWebSockets statement was checked against the shipping Object Pascal source on the same date.

Native components, or a cross-language library

The most important difference between these two products is not a feature, it is how each of them reaches your project. Both choices are deliberate, and each buys something the other cannot.

Chilkat

Chilkat Software · Cross-language library

One library published for many programming languages. For Delphi, Chilkat describes it as "a native library with a flat, Pascal-callable API": ChilkatDelphi32.dll or ChilkatDelphi64.dll on Windows, a .so on Linux and Android, a .dylib per architecture on macOS, static .a libraries on iOS, plus "a small .pas interface unit" per class that you add to your uses clause. Objects are opaque handles. It is not an ActiveX and never needs regsvr32.

Official page

What Chilkat's architecture buys

Chilkat states that its APIs are identical across programming languages and that a licence is "valid across all supported operating systems, programming languages, architectures, frameworks". The same class names and the same method names appear in C#, VB.NET, Java, Python, Go, Node.js, PHP, Ruby, Swift, Objective-C, Perl, Tcl, PureBasic, Xojo, B4X, DataFlex, PowerShell and more. If your organisation already calls Chilkat from a C# service and a Python job, calling it from Delphi costs nothing extra in licence terms and very little in learning. No single-language component library can offer that.

Where the boundary shows

The cost of a uniform cross-language API is that it cannot be shaped to any one language. Chilkat's published list of what the Delphi download contains names no design-time package, so nothing appears on the palette and there is no Object Inspector configuration. Chilkat also documents that "Chilkat methods (in any programming language) never raise exceptions to indicate failure. All failures are indicated by the return value of the method", with detail available from the LastErrorText property. That is a coherent design for a library that has to look the same in every language it supports, and it is simply not the Delphi idiom, so error handling in a Delphi codebase built on it reads differently from the code around it.

Unit names, and what to do about them

Because the units are named after the classes, Chilkat ships Crypt2.pas, Http.pas, Zip.pas and so on. Chilkat anticipates the collision this can cause in a large project and ships rename_units.bat and rename_units.py, which add a ck_ prefix to every unit and fix the unit declaration inside each file to match. sgcWebSockets prefixes every unit and every class with sgc and Tsgc, so the question does not arise. Worth knowing before you add either to an existing codebase, not a mark against either one.

Side by side, from each vendor's own material

A check means the vendor documents the capability. A dash means it is absent from the vendor's own published class list or documentation, which is what we checked; it is not a claim about what the product could be made to do. A tilde means partial, or that we could not find it documented either way. The Sources table below lists every page consulted.

Real-time protocols and messaging

13 rows
Feature sgcWebSockets Chilkat
WebSocket client (RFC 6455) Connects to a WebSocket endpoint and exchanges frames
WebSocket server (RFC 6455) Listens, accepts clients and serves WebSocket connections
per-message-deflate (RFC 7692) WebSocket compression extension ~
MQTT client (3.1.1 / 5.0) Publish and subscribe over TCP or WebSocket
AMQP client (0.9.1 / 1.0) Broker messaging, RabbitMQ and compatible brokers
STOMP client Text-frame broker protocol, ActiveMQ and RabbitMQ
WAMP client RPC and pub/sub over WebSocket
Server-Sent Events Consuming an HTTP event stream ~
HTTP/2 client Native HTTP/2 client, RFC 7540 / 9113 ~
MCP client Model Context Protocol client
MCP server Hosting tools and resources for an AI model
AI provider clients OpenAI, Anthropic, Gemini, Grok, Mistral, DeepSeek
Cryptocurrency exchange clients Typed WebSocket clients for named exchanges

Delphi integration, compilers and platforms

9 rows
Feature sgcWebSockets Chilkat
Components on the IDE palette Design-time install, Object Inspector, form designer
Implementation compiles into your executable The library links into the EXE, no vendor runtime to deploy
Failures reported as Delphi exceptions Idiomatic try/except and OnException handling
Delphi 7 Oldest Delphi release the vendor states it supports
Delphi 13 Florence Newest Delphi release the vendor states it supports
C++ Builder A supported C++ Builder distribution is published
Lazarus / Free Pascal A Lazarus or FPC distribution is published
Windows, macOS, Linux, iOS, Android All five targets published by the vendor
Same API in other programming languages The identical API is available outside Object Pascal ~

Wider library surface, source and licensing

9 rows
Feature sgcWebSockets Chilkat
Email: SMTP, POP3, IMAP Mailbox access and message composition
SFTP, SSH, SCP, FTP File transfer and remote shell
PDF, ZIP, TAR, S/MIME Document and archive handling
XML and CAdES digital signatures XMLDSig, code signing, certificate handling
Cloud storage clients S3, Azure Storage, Dropbox, Google Drive, OneDrive, SharePoint, Box
Symmetric and public-key cryptography AES, RSA, ECC, hashing, KDFs
Implementation source code included The code behind the API ships with the licence
Royalty-free redistribution Ship compiled applications with no per-copy fee
Fully functional evaluation A time-limited build carrying the full feature set
Documented by the vendor Not in the vendor's published list ~ Partial, or not documented either way

Notes on individual rows. The MQTT, AMQP, STOMP and WAMP rows read from the Chilkat Delphi DLL reference index, which lists 103 classes and contains no class for any of the four. The per-message-deflate and HTTP/2 rows carry a tilde because neither is mentioned in the Chilkat WebSocket or Http class references, and silence is not proof of absence. The Server-Sent Events tilde reflects that Chilkat's ServerSentEvent class is documented as a parser for event-stream text rather than a streaming HTTP client. The C++ Builder row is a check on both sides, but the distributions differ in shape: Chilkat publishes static libraries for C++ Builder 12 and 13 on Win32 and Win64, while sgcWebSockets ships package projects for eighteen C++ Builder versions from 2007 to 13. On the email, file transfer, document and cloud storage rows, sgcWebSockets scores a dash because those are not in this product; eSeGeCe sells signing and PDF work as separate products, and this page compares sgcWebSockets alone. Two more details worth carrying out of the table: Chilkat states that Delphi 7 support is Windows only, and the two AI provider lists are close but not identical, with Chilkat naming Perplexity and sgcWebSockets naming Ollama.

Opening a WebSocket connection

The same job in each product. The Chilkat listing is condensed from Chilkat's own published Delphi DLL example, with its error checks removed for length; the sgcWebSockets listing uses the properties and events published by TsgcWebSocketClient.

uses
  sgcWebSocket, sgcWebSocket_Classes;

// FClient is a TsgcWebSocketClient field on the form
procedure TForm1.FormCreate(Sender: TObject);
begin
  FClient := TsgcWebSocketClient.Create(Self);
  FClient.Host := 'echo.example.com';
  FClient.Port := 443;
  FClient.TLS  := True;

  // reconnect automatically if the link drops
  FClient.WatchDog.Enabled  := True;
  FClient.WatchDog.Interval := 10;
  FClient.WatchDog.Attempts := 0;

  FClient.OnMessage := ClientMessage;
  FClient.Active    := True;
end;

procedure TForm1.ClientMessage(Connection: TsgcWSConnection;
  const Text: string);
begin
  Memo1.Lines.Add(Text);
end;

procedure TForm1.SendClick(Sender: TObject);
begin
  FClient.WriteData('hello');
end;
uses
  System.SysUtils, Rest, WebSocket;

procedure TForm1.Button1Click(Sender: TObject);
var
  success: Boolean;
  rest: HCkRest;
  ws: HCkWebSocket;
  responseBody: PWideChar;
  statusCode: Integer;
begin
  // the WebSocket runs over an established Chilkat Rest connection
  rest := CkRest_Create();
  success := CkRest_Connect(rest, 'someserver.com', 80, False, False);

  ws := CkWebSocket_Create();
  success := CkWebSocket_UseConnection(ws, rest);

  // add the open-handshake headers, then send the GET
  CkWebSocket_AddClientHeaders(ws);
  responseBody := CkRest__fullRequestNoBody(rest, 'GET', '/something');
  statusCode := CkRest_getResponseStatusCode(rest);

  // 101 is expected, then validate Sec-WebSocket-Accept
  success := CkWebSocket_ValidateServerHandshake(ws);
  if success <> True then
    Memo1.Lines.Add(CkWebSocket__lastErrorText(ws));

  CkRest_Dispose(rest);
  CkWebSocket_Dispose(ws);
end;

Condensed from Chilkat's published listing at example-code.com/delphiDll/websocket_connect.asp. The full version checks the return value of every call and prints LastErrorText on failure, which is Chilkat's documented error model.

Accepting connections is where the two part company

Chilkat is explicit that its WebSocket class is a client, and documents a separate Socket class for the listening side.

What Chilkat documents

"Chilkat.WebSocket implements the client side of the WebSocket protocol. It initiates an opening handshake with an existing WebSocket server. It does not listen for incoming connections, accept clients, or implement a WebSocket server." Chilkat's separate Socket class does cover server-side sockets, documented as "Listen for and accept incoming client connections when implementing simple socket servers or custom listener workflows", so a WebSocket server could be built on top of it. The handshake, the framing, the control frames and any extensions would be your code.

uses
  sgcWebSocket, sgcWebSocket_Classes;

// FServer is a TsgcWebSocketServer field on the form
procedure TForm1.FormCreate(Sender: TObject);
begin
  FServer := TsgcWebSocketServer.Create(Self);
  FServer.Port      := 8080;
  FServer.OnMessage := ServerMessage;
  FServer.Active    := True;
end;

procedure TForm1.ServerMessage(Connection: TsgcWSConnection;
  const Text: string);
begin
  // answer this client
  Connection.WriteData('echo: ' + Text);
  // or tell everybody
  FServer.Broadcast(Text);
end;

TsgcWebSocketServer and TsgcWebSocketHTTPServer are registered from the Professional edition upward. The Delphi feature matrix lists which components each edition carries.

What ships with your application

Both products are royalty-free for compiled applications. What differs is whether anything has to travel beside the executable.

Chilkat on Windows

"The Chilkat DLL must be in the same directory as your application's EXE." Chilkat recommends a post-build event to copy the right DLL for the target platform, and lists the error you get when it is missing. Three Windows binaries are published: 32-bit, 64-bit and an Arm64EC build for the Windows on Arm target.

Chilkat on Linux, macOS, mobile

Linux resolves libchilkatdelphi_x86_64.so through the normal loader search, which does not include the executable's own directory, so Chilkat documents either a system-wide install with ldconfig or setting LD_LIBRARY_PATH. The macOS dylibs are code-signed by Chilkat and ship beside the executable. iOS uses static libraries linked into the app; Android packages one .so per ABI into the APK. Chilkat states that the Linux build requires glibc 2.27 or newer.

sgcWebSockets

The library compiles into the executable, so there is no sgc runtime to deploy on any platform. TLS is the one thing that can still need a file: the OpenSSL back end needs the OpenSSL libraries present, while the SChannel back end on Windows, available from the Professional edition upward, uses the operating system and needs nothing extra.

What each product covers that the other does not

The rows where the matrix above disagrees, gathered in one place. The Chilkat entries come from Chilkat's published class list and product pages, the sgcWebSockets entries from the shipping Object Pascal source.

In Chilkat, not in sgcWebSockets

  • The same class and method names in every language Chilkat supports, under one licence. Chilkat states that its APIs are identical across programming languages and that a licence is "valid across all supported operating systems, programming languages, architectures, frameworks".
  • Email: SMTP, POP3 and IMAP.
  • File transfer and remote shell: SFTP, SSH, SCP and FTP.
  • Documents and archives: PDF, ZIP, TAR and S/MIME.
  • XML and CAdES digital signatures, code signing and certificate handling.
  • Cloud storage clients for S3, Azure Storage, Dropbox, Google Drive, OneDrive, SharePoint and Box.
  • Perplexity in its AI provider list, where the sgcWebSockets list names Ollama.

The email, file transfer, document and cloud storage rows are absent from sgcWebSockets rather than from eSeGeCe: signing and PDF work are sold as separate products, and this page compares sgcWebSockets alone.

Two different licence shapes

Both vendors publish their terms. Prices change, so this section describes the models and links to the pricing pages rather than quoting figures.

Chilkat

One Bundle licence covers every Chilkat class. Chilkat describes it as "a perpetual license that does not expire", with a maintenance period that governs upgrades to newer versions; if maintenance lapses for more than three months, Chilkat states the licence must be repurchased at the regular price. Levels are 1-developer, up to 4 developers, and an up-to-8-developer team. The licence is royalty-free, and Chilkat states redistributables may be included in your installer and used on any number of computers or servers. Libraries are "fully functional for a 30-day evaluation" unlocked by passing any string to UnlockBundle.

Chilkat licensing

What happens when you get stuck

Both vendors publish how to reach them. This section reports what each says, and nothing about how well it works.

Chilkat

Chilkat's help page directs technical questions to an email address, and points to the reference documentation, several hundred ready-to-run Delphi DLL examples on example-code.com, online code generators at tools.chilkat.io, and the Chilkat blog. The reference documentation covers every class in every supported language, and the example site is organised by task.

eSeGeCe

sgcWebSockets support runs through the eSeGeCe helpdesk, with the online help, a downloadable user manual, the bundled demo projects and the release history published on the site. Because source ships with every non-Basic edition, a support conversation can refer to a line of code you both have in front of you.

sgcWebSockets and Chilkat, frequently asked

The questions developers ask when they are deciding between the two.

No, and Chilkat does not describe it as one. Chilkat describes its Delphi offering as "a native library with a flat, Pascal-callable API": a DLL on Windows, a .so on Linux and Android, a .dylib per architecture on macOS and static .a libraries on iOS, with one Pascal interface unit per class that you add to your uses clause. Objects are handles, so CkWebSocket_Create returns an HCkWebSocket that you pass as the first argument of every call and release with CkWebSocket_Dispose. Chilkat's published list of what the download contains names no design-time package, so nothing appears on the component palette. sgcWebSockets takes the other approach: Object Pascal units that compile into your project and register components on the IDE palette.
Not through its WebSocket class. The Chilkat reference documentation states it plainly: "Chilkat.WebSocket implements the client side of the WebSocket protocol. It initiates an opening handshake with an existing WebSocket server. It does not listen for incoming connections, accept clients, or implement a WebSocket server." Chilkat's separate Socket class does accept incoming TCP connections, so a WebSocket server could be written on top of it, but the framing, handshake and extension work would be yours. sgcWebSockets ships TsgcWebSocketServer and TsgcWebSocketHTTPServer from the Professional edition upward.
No. The library is Object Pascal source that the Delphi compiler links into your executable, so there is nothing to copy next to the EXE. TLS is the one place a DLL can still appear: the OpenSSL back end needs the OpenSSL libraries, while the SChannel back end on Windows, available from the Professional edition upward, uses the operating system and needs nothing extra. Chilkat is explicit that its runtime library must travel with the application: "The Chilkat DLL must be in the same directory as your application's EXE." On Linux the shared object has to be installed system wide or found through LD_LIBRARY_PATH.
It does. Chilkat states that its API is identical across programming languages and that one licence covers all of them, so a team that already knows CkHttp and CkJsonObject from another language carries that knowledge straight into Delphi at no extra licence cost, an advantage no single-language component library can match. Chilkat's published class list does not include a WebSocket server, MQTT, AMQP, STOMP or WAMP. sgcWebSockets covers all five, and is Object Pascal only.
sgcWebSockets ships full Object Pascal source in the Standard, Professional and Enterprise editions, so the implementation is on disk, steps into the debugger and can be patched locally. A compiled DCU option is sold separately as sgcWebSockets Basic. Chilkat's Delphi download contains one .pas interface unit per class plus the prebuilt binaries; the implementation lives inside the binary, and Chilkat does not publish a source distribution.
Chilkat states support for "Delphi XE through Delphi 13" and adds that it "also works with Delphi 7, 8, and 2005–2010 on Windows". Its separate C++ Builder distribution publishes static libraries for C++ Builder 12 and 13, Win32 and Win64. sgcWebSockets ships design-time and runtime packages for twenty-one Delphi versions from Delphi 7 to Delphi 13 Florence, and eighteen C++ Builder package projects from C++ Builder 2007 to C++ Builder 13, plus a Lazarus package.
Every Chilkat statement was read from a Chilkat page on 6 September 2026, against Chilkat version 11.6.0 dated 4 September 2026, and each of those pages is linked in the Sources table below. Where Chilkat's own documentation did not answer a question, the matrix carries a tilde rather than a cross, because absence of documentation is not the same as absence of a feature. Every sgcWebSockets statement was read from the shipping Delphi source, from the component registration units and from the compiler defines in sgcVer.inc, which is what decides what each edition actually contains.

Every Chilkat claim, linked

All Chilkat pages below were read on 6 September 2026, against Chilkat version 11.6.0 dated 4 September 2026. If you find something on this page that no longer matches Chilkat's own material, please tell us and we will correct it.

SourceURL
Chilkat: Delphi DLL product and setup page (v11.6.0, 04-Sep-2026)https://www.chilkatsoft.com/delphiDll.asp
Chilkat: Delphi DLL reference documentation, full class indexhttps://www.chilkatsoft.com/refdoc/delphidll.asp
Chilkat: WebSocket class reference for the Delphi DLLhttps://www.chilkatsoft.com/refdoc/dd_CkWebSocketRef.html
Chilkat: Socket class reference for the Delphi DLLhttps://www.chilkatsoft.com/refdoc/dd_CkSocketRef.html
Chilkat: ServerSentEvent class reference for the Delphi DLLhttps://www.chilkatsoft.com/refdoc/dd_CkServerSentEventRef.html
Chilkat: Ai class reference (provider list)https://www.chilkatsoft.com/refdoc/dd_CkAiRef.html
Chilkat: Mcp class reference (Model Context Protocol client)https://www.chilkatsoft.com/refdoc/dd_CkMcpRef.html
Chilkat: Http class reference for the Delphi DLLhttps://www.chilkatsoft.com/refdoc/dd_CkHttpRef.html
Chilkat: published Delphi DLL WebSocket Connect examplehttps://www.example-code.com/delphiDll/websocket_connect.asp
Chilkat: Delphi DLL WebSocket example indexhttps://www.example-code.com/delphiDll/websocket.asp
Chilkat: C / C++ libraries for Embarcadero C++ Builder (v11.5.0, 02-Jun-2026)https://www.chilkatsoft.com/downloads-cpp-builder.asp
Chilkat: downloads index (one distribution per language)https://www.chilkatsoft.com/downloads.asp
Chilkat: products page (supported languages and environments)https://www.chilkatsoft.com/products.asp
Chilkat: licensing explained (perpetual licence, maintenance, royalty-free)https://www.chilkatsoft.com/licensingExplained.asp
Chilkat: purchase page (licensing levels)https://www.chilkatsoft.com/purchase
Chilkat: technical help (return values, LastErrorText, exceptions)https://www.chilkatsoft.com/support.asp
Chilkat: Lazarus / Free Pascal distributionhttps://www.chilkatsoft.com/lazarus.asp
sgcWebSockets: product pagehttps://www.esegece.com/products/websockets/
sgcWebSockets: Delphi feature matrix per editionhttps://www.esegece.com/products/websockets/features/feature-matrix-delphi/
sgcWebSockets: pricing and edition comparisonhttps://www.esegece.com/pricing/
sgcWebSockets: comparison against Indy, ICS, TMS and mORMot 2https://www.esegece.com/products/websockets/comparison/
RFC 6455, The WebSocket Protocolhttps://datatracker.ietf.org/doc/html/rfc6455
RFC 7692, Compression Extensions for WebSockethttps://datatracker.ietf.org/doc/html/rfc7692

Other comparisons. The same treatment for TMS Software and for IPWorks from /n software, or the wider survey of Delphi and C++ Builder WebSocket libraries covering Indy, ICS and mORMot 2. If the library question is settled and you would rather see the code, the Delphi use cases take one job per page from an empty form to something that runs.

Best value: All-AccessEvery eSeGeCe product, Premium Support included, from €1,059/year.
See All-Access pricing

Try sgcWebSockets on your own project

Download the free trial, drop a client and a server on a form, and see how it fits before you decide.