De Indy-bibliotheek is een open source client/server-communicatiebibliotheek die TCP/UDP/RAW-sockets ondersteunt, evenals meer dan 100 protocollen op hoger niveau, waaronder SMTP, POP3, IMAP, NNTP, HTTP, FTP en meer. Indy is geschreven in Delphi maar is ook beschikbaar voor C++Builder en FreePascal. sgcWebSockets gebruikt Indy als basis voor sommige componenten en de verschillende sgcWebSockets-edities maken op verschillende manieren gebruik van de Indy-bibliotheek.
sgcWebSockets ondersteunt protocollen zoals HTTP/2 die het gebruik van ALPN vereisen, kan TLS 1.3 gebruiken via openSSL 1.1.1 of openSSL 3.0.0... al deze functies worden niet ondersteund door de standaard Indy-bibliotheek, dus de Enterprise-editie van sgcWebSockets bevat een aangepaste Indy-bibliotheek die deze functies ondersteunt. Om het verwijderen van de standaard Indy-bibliotheek uit de IDE te vermijden, worden de vereiste Indy-bestanden hernoemd door het voorvoegsel "sgc" toe te voegen, zodat de eenheid "IdGlobal" bijvoorbeeld wordt hernoemd naar "sgcIdGlobal". Op deze manier kunnen beide versies naast elkaar bestaan zonder problemen.
Hieronder ziet u welke Indy-versie wordt gebruikt door elke sgcWebSockets-editie:
| sgcWebSockets-editie | Indy-versie |
| STANDAARD | Standaard |
| PROFESSIONAL | Standaard |
| ENTERPRISE | Aangepast |
Klanten met "Geregistreerde" licenties — oude licenties van vóórdat het sgcWebSockets-pakket werd gesplitst — vinden de volgende sgcWebSockets-pakketversies:
| sgcWebSockets-editie | Indy-versie |
| sgcWebSockets | Standaard |
| sgcWebSockets min | Standaard |
| sgcWebSockets min Indy* | Aangepast |
*De sgcWebSockets_min_indy is hetzelfde als de sgcWebSockets Enterprise editie.
Het gebruik van de aangepaste Indy-versie wordt gedefinieerd in het bestand "sgcVer.inc" in de bronmap. Er is een compileerdefiniëring genaamd "SGC_CUSTOM_INDY" die het gebruik van deze Indy-versie in- of uitschakelt. Als u een Enterprise Edition heeft en het gebruik van de aangepaste Indy wilt uitschakelen, verwijder dan de volgende compileerdefiniëring:
{$DEFINE SGC_CUSTOM_INDY}
Als u SGC_CUSTOM_INDY inschakelt maar niet de vereiste aangepaste Indy-versie-eenheden in de bronmap hebt, werkt deze compilatordefiniëring niet.
Het gebruik van de aangepaste Indy-versie is niet beperkt tot de sgcWebSockets-componenten. Sommige klanten willen gebruik maken van de nieuwe functies van deze aangepaste Indy-versie in standaard Indy-componenten zoals SMTP, zodat ze TLS 1.3 kunnen gebruiken bij het verzenden van e-mails, het gebruik van FTP-servers, enz. De eSeGeCe ALL-ACCESS-editie biedt een aanvullend volledig Indy-pakket met al deze functies. Dit pakket, genaamd "sgcIndy-pakket", bevat de volledige Indy-bibliotheek met ondersteuning voor openSSL 1.1.1 en openSSL 3.0.0. U moet dus eerst uw huidige Indy-bibliotheek verwijderen die in uw IDE is geïnstalleerd en vervolgens deze versie installeren; het installatieproces voor het sgcIndy-pakket is precies hetzelfde als voor elke Indy-bibliotheek (hier worden de units niet hernoemd).
Als u OpenSSL-bibliotheken wilt gebruiken, stelt u de globale variabele OPENSSL_API_VERSION in op de gewenste OpenSSL API-versie voordat u de OpenSSL-bibliotheken laadt. Deze globale variabele bevindt zich in de unit IdSSLOpenSSLHeaders.
Voorbeeld: om de OpenSSL 1.1.1-bibliotheken te gebruiken
OPENSSL_API_VERSION := opSSL_1_1;
When using eSeGeCe ALL-ACCESS and the sgcIndy pakket in the dezelfde application, the sources may be duplicated because the sgcWebSockets Enterprise versie uses a aangepast Indy versie with the Indy units renamed. This means that, bijvoorbeeld, units like sgcIdGlobal.pas and IdGlobal.pas will be compiled in the dezelfde application (the eerste is used when using elk component of the sgcWebSockets Enterprise pakket and the second when using elk component of the sgcIndy pakket, like ftp, smtp...).
Om dit gedrag te voorkomen, kan het sgcWebSockets-pakket worden geconfigureerd om de geïnstalleerde sgcIndy-versie te gebruiken en toch alle componenten te kunnen gebruiken. Volg hiervoor de onderstaande instructies:
1. Open het bestand sgcVer.inc, dat zich bevindt in de map Source van het sgcWebSockets-pakket.
2. Schakel de compilerdirectief SGC_CUSTOM_INDY uit. Deze optie vertelt de compiler dat de bestanden die beginnen met sgcId*.pas bestaan en moeten worden gebruikt bij het compileren van het sgcWebSockets Enterprise-pakket.
3. Schakel de volgende compiler in: SGC_INDY_LIB. Deze optie vertelt de compiler dat het sgcIndy-pakket is geïnstalleerd en moet worden gebruikt bij het compileren van het pakket.
{$DEFINE SGC_INDY_LIB}
Met de vorige configuratie gebruikt het sgcWebSockets Enterprise-package het geïnstalleerde sgcIndy-package, waardoor alle functies die van dit package gebruikmaken (zoals http/2, IOCP, openSSL 3.0...) worden ingeschakeld.