Indy è una libreria open source per comunicazioni client/server che supporta socket TCP/UDP/RAW, nonché oltre 100 protocolli di livello superiore tra cui SMTP, POP3, IMAP, NNTP, HTTP, FTP e molti altri. Indy è scritta in Delphi ma è disponibile anche per C++Builder e FreePascal. sgcWebSockets utilizza Indy come base per alcuni componenti e le diverse edizioni di sgcWebSockets fanno un uso differente della libreria Indy.
sgcWebSockets supporta protocolli come HTTP/2 che richiedono l'uso di ALPN, può utilizzare TLS 1.3 tramite openSSL 1.1.1 o openSSL 3.0.0... tutte queste funzionalità non sono supportate dalla libreria Indy standard, quindi l'edizione Enterprise di sgcWebSockets include una libreria Indy personalizzata che supporta queste funzionalità. Per evitare di disinstallare la libreria Indy standard dall'IDE, i file Indy richiesti vengono rinominati aggiungendo il prefisso "sgc", quindi ad esempio: l'unità "IdGlobal" viene rinominata in "sgcIdGlobal". In questo modo entrambe le versioni possono coesistere senza problemi.
Di seguito viene indicata la versione Indy utilizzata da ogni edizione di sgcWebSockets:
| Edizione sgcWebSockets | Versione Indy |
| STANDARD | Standard |
| PROFESSIONAL | Standard |
| ENTERPRISE | Personalizzato |
I clienti con licenze "Registered", ovvero vecchie licenze precedenti alla suddivisione del pacchetto sgcWebSockets, troveranno le seguenti versioni del pacchetto sgcWebSockets:
| Edizione sgcWebSockets | Versione Indy |
| sgcWebSockets | Standard |
| sgcWebSockets min | Standard |
| sgcWebSockets min Indy* | Personalizzato |
*Il sgcWebSockets_min_indy è equivalente all'edizione sgcWebSockets Enterprise.
L'uso della versione personalizzata di Indy è definito nel file "sgcVer.inc" che si trova nella cartella dei sorgenti. Esiste un compiler define chiamato "SGC_CUSTOM_INDY" che abilita o disabilita l'uso di questa versione di indy. Se ha una Enterprise Edition e desidera disabilitare l'uso del custom indy, elimini semplicemente il seguente compiler define:
{$DEFINE SGC_CUSTOM_INDY}
Naturalmente, se abilita SGC_CUSTOM_INDY ma non dispone nella cartella dei sorgenti delle unit necessarie della versione custom di indy, questo compiler define non funzionerà.
L'utilizzo della versione Indy personalizzata non è limitato ai componenti sgcWebSockets. Alcuni clienti desiderano sfruttare le nuove funzionalità di questa versione Indy personalizzata nei componenti Indy standard come SMTP, ad esempio, per poter utilizzare TLS 1.3 nell'invio di email, nei server FTP, ecc. L'edizione eSeGeCe ALL-ACCESS fornisce un pacchetto Indy completo aggiuntivo con tutte queste funzionalità. Questo pacchetto, chiamato "pacchetto sgcIndy", include la libreria Indy completa con supporto per openSSL 1.1.1 e openSSL 3.0.0. Pertanto, è necessario prima disinstallare la libreria Indy corrente installata nell'IDE e poi installare questa versione; il processo di installazione del pacchetto sgcIndy è esattamente lo stesso di qualsiasi libreria Indy (qui le unità non vengono rinominate).
Quando si desidera utilizzare le librerie openSSL, è sufficiente impostare la variabile globale OPENSSL_API_VERSION sulla versione desiderata dell'API OpenSSL prima di caricare le librerie OpenSSL. Questa variabile globale si trova nell'unità IdSSLOpenSSLHeaders.
Esempio: per utilizzare le librerie openSSL 1.1.1
OPENSSL_API_VERSION := opSSL_1_1;
Quando si utilizza eSeGeCe ALL-ACCESS e il pacchetto sgcIndy nella stessa applicazione, le sorgenti potrebbero essere duplicate in quanto la versione Enterprise di sgcWebSockets utilizza una versione personalizzata di Indy con le unità rinominate. Ciò significa che, ad esempio, unità come sgcIdGlobal.pas e IdGlobal.pas verranno compilate nella stessa applicazione (la prima viene utilizzata quando si usa qualsiasi componente del pacchetto Enterprise sgcWebSockets e la seconda quando si usa qualsiasi componente del pacchetto sgcIndy, come ftp, smtp...).
Per evitare questo comportamento, è possibile configurare il package sgcWebSockets affinché utilizzi la versione di sgcIndy installata e continui comunque a utilizzare tutti i componenti. A tal fine, segua le istruzioni riportate di seguito:
1. Aprire il file sgcVer.inc, situato nella cartella Source del pacchetto sgcWebSockets.
2. Disabilitare la direttiva del compilatore: SGC_CUSTOM_INDY. Questa opzione indica al compilatore che i file che iniziano con sgcId*.pas esistono e devono essere utilizzati durante la compilazione del pacchetto sgcWebSockets Enterprise.
3. Abiliti il seguente compilatore: SGC_INDY_LIB. Questa opzione indica al compilatore che il pacchetto sgcIndy è installato e deve essere utilizzato durante la compilazione del pacchetto.
{$DEFINE SGC_INDY_LIB}
Utilizzando la configurazione precedente, il pacchetto sgcWebSockets Enterprise utilizzerà il pacchetto sgcIndy installato e tutte le funzionalità che fanno uso di questo pacchetto (come http/2, IOCP, openSSL 3.0...) saranno abilitate.